VS code上报错invalid UTF-8 encoding:

VS code上报错invalid UTF-8 encoding:

笔者之前是用别的语言的,在入门Go输出中文的时候发现了这个问题。

因为之前别的语言对于GB18030的编码都通用,所以第一次遇到这个问题。

解决的方式

在VS code的右下角,点击编码对应的选项

" alt="image-20211015204115519" style="zoom:33%;" />

选择通过编码重新打开
在这里插入图片描述

之后选择UTF-8即可。

这里还会有个坑人的点:

就你通常是出现这个问题后,才去修改编码的,编码改后记得将代码中的中文再重新输一遍再编译运行。不然还是会出错。

本次的分享到处结束,如果对你有帮助可以帮我点个赞哦

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xba in position 1413: invalid start byte Traceback: File "D:\Anaconda\Lib\site-packages\streamlit\runtime\scriptrunner\exec_code.py", line 85, in exec_func_with_error_handling result = func() ^^^^^^ File "D:\Anaconda\Lib\site-packages\streamlit\runtime\scriptrunner\script_runner.py", line 576, in code_to_exec exec(code, module.__dict__) File "D:\2035946879\111.py", line 233, in <module> processed_df = load_and_preprocess_data() ^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\2035946879\111.py", line 15, in load_and_preprocess_data df = pd.read_csv("Single_breadth_to_melt.csv") ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Anaconda\Lib\site-packages\pandas\io\parsers\readers.py", line 1026, in read_csv return _read(filepath_or_buffer, kwds) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Anaconda\Lib\site-packages\pandas\io\parsers\readers.py", line 620, in _read parser = TextFileReader(filepath_or_buffer, **kwds) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Anaconda\Lib\site-packages\pandas\io\parsers\readers.py", line 1620, in __init__ self._engine = self._make_engine(f, self.engine) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Anaconda\Lib\site-packages\pandas\io\parsers\readers.py", line 1898, in _make_engine return mapping[engine](f, **self.options) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "D:\Anaconda\Lib\site-packages\pandas\io\parsers\c_parser_wrapper.py", line 93, in __init__ self._reader = parsers.TextReader(src, **kwds) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "parsers.pyx", line 574, in pandas._libs.parsers.TextReader.__cinit__ File "parsers.pyx", line 663, in pandas._libs.parsers.TextReader._get_header File "parsers.pyx", line 874, in pandas._libs.parsers.TextReader._tokenize_rows File "parsers.pyx", line 891, in pandas._libs.parsers.TextReader._check_tokenize_status File "parsers.pyx", line 2053, in pandas._libs.parsers.raise_parser_error File "<frozen codecs>", line 322, in decode 根据上述生成代码出现如上报错,给出修改后代码
07-02
### 解决方案概述 当处理无效的 UTF-8 字节序列时,通常会遇到编码转换或解析过程中抛出异常的情况。这可能发生在多种场景下,例如跨平台移植代码、使用不同的 C++ 编译器环境(如 Visual Studio 和 MinGW),或者在字符串操作中未正确识别多字节字符。 以下是针对该问题的一种解决方案: #### 使用 `std::wstring_convert` 或自定义解码逻辑来处理无效 UTF-8 序列 C++ 提供了标准库工具用于处理不同字符集之间的转换,其中一种方法是通过 `std::wstring_convert` 配合特定的编解码器实现。然而,在某些环境中(如 MinGW 中提到的缺少默认区域设置支持[^1]),可能会因为缺乏必要的 `std::codecvt` 实现而导致失败。因此可以考虑手动编写替代逻辑以确保兼容性。 对于具体的修复措施之一就是捕获并替换那些无法正常映射到目标编码体系下的错误数据片段。下面展示了一个简单的例子说明如何检测以及修正这类问题: ```cpp #include <locale> #include <codecvt> #include <string> #include <iostream> int main() { try { std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t> converter; // 假设这里有一个包含非法UTF-8的数据流 const char* invalidUtf8Data = "\xFF\xFE\xFD"; // 尝试将其转为宽字符串 std::wcout << L"Original Data: " << converter.from_bytes(invalidUtf8Data) << std::endl; } catch(const std::range_error& e){ std::cerr << "Caught range error while converting:" << e.what() << '\n'; // 如果发生异常,则采取恢复策略比如替换成问号或其他占位符 auto fallbackHandler = [](unsigned int c, std::ostream&) -> void {return ;}; std::wstring_convert<std::codecvt_utf8<wchar_t>, wchar_t,fallbackHandler> safeConverter(fallbackHandler); const char* problematicInput="\xFF\xFE\xFD"; std::wcout<<L"Fallback Converted String:"<<safeConverter.from_bytes(problematicInput)<<std::endl; } } ``` 上述程序展示了如果原始输入包含了不合法的 UTF-8 数据会发生什么情况,并演示了一种基本的方式去应对这种情况——即利用回调函数机制来自定义错误处理行为[^2]。 需要注意的是,尽管这种方法可以在一定程度上缓解因不良编码引起的崩溃风险,但它并不能完全消除潜在的信息丢失隐患;而且随着现代 C++ 的发展,《C++17》已经废弃了许多与此相关的功能组件,所以在新项目开发当中应当寻找更加现代化的技术栈来进行类似的国际化/本地化工作。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值