python3写入文件encoding=utf-8失效,依旧中文乱码

一开始的代码是:

with open('hello.csv', 'w', encoding='utf-8', newline='')as csv_file:

但是csv文件中的中依旧乱码,经过一顿百度,找到一种解决方式:

with open('hello.csv', 'w', encoding='utf-8-sig', newline='')as csv_file:

将encoding的utf-8换成utf-8-sig就可以了
所谓uft-8-sig"中sig全拼为 signature 也就是"带有签名的utf-8

### Python 中处理 UTF-8 编码问题的方法 当遇到文件读写操作中的编码错误时,通常是因为指定的编码方式与实际文件使用的编码不匹配。对于 `utf-8` 编码,在打开文件时应显式声明该编码格式[^1]。 如果尝试读取或写入带有不同字符集的文本而未指明正确的编码,则可能会引发异常。例如: ```python with open('example.txt', 'r', encoding='utf-8') as file: content = file.read() ``` 上述代码片段展示了如何以只读模式并采用 `utf-8` 编码来加载名为 `example.txt` 的文件内容。为了防止潜在的解码失败,还可以设置一个可选参数 `errors` 来定义当遇到无法解析的字节序列时的行为策略。常见的选项有 `'strict'`, `'ignore'`, 和 `'replace'`: ```python # 使用 replace 替换未知字符为 ? with open('example.txt', 'r', encoding='utf-8', errors='replace') as file: content = file.read() # 跳过所有非法字符而不抛出异常 with open('output.txt', 'w', encoding='utf-8', errors='ignore') as file: file.write(some_string) ``` 另外值得注意的是,某些情况下即使源文件确实是以 `utf-8` 形式保存,但由于 BOM (Byte Order Mark) 存在与否的不同也可能引起兼容性问题。因此建议总是确认目标平台是否支持带BOM标记的UTF-8文档;如果不支持的话可以在编写程序逻辑的时候去除它。 最后一点关于跨平台移植性的考虑:Windows操作系统默认使用 `\r\n` 表示新行符,而在Unix/Linux/MacOS上则是单个 `\n`. 这种差异有时会造成显示上的混乱,特别是在涉及多平台间交换数据的情况下更为明显。为了避免此类麻烦的发生,可以利用Python内置模块 `os.linesep` 或者直接通过二进制形式访问文件(`rb`)再转换成所需字符串表示法。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值