如何在Python中使用特殊字符并解决文件写入的UnicodeEncodeError报错
问题原因
- 运行环境默认的文本文件编码为cp1252,该编码无法兼容
\N{Circled White Star}(对应字符✪)这类特殊Unicode字符,写入时触发编码报错 - 原代码中
f.close未添加括号,仅引用了关闭方法并未实际执行,文件没有正常关闭,即使无编码错误内容也不会写入磁盘
解决方案
方案1(推荐):打开文件时显式指定utf-8编码
直接在调用open()函数时添加encoding='utf-8'参数,同时建议使用with上下文管理器自动处理文件关闭,无需手动调用close方法,避免漏写括号的问题:
# 最优写法:with上下文管理器自动管理文件生命周期 with open('test.txt', 'w', encoding='utf-8') as f: f.write("\N{Circled White Star}") # 兼容原有写法的修改版 f = open('test.txt','w', encoding='utf-8') f.write("\N{Circled White Star}") f.close() # 注意补充括号执行关闭操作
修改后运行即可正常将✪字符写入test.txt文件。
方案2(不推荐):全局修改Python默认编码
可以设置系统环境变量PYTHONUTF8=1,让Python所有脚本默认使用utf-8编码打开文本文件,无需每次指定encoding参数。但该配置会全局影响所有Python程序的编码行为,可能引发其他兼容问题,优先选择方案1。
内容的提问来源于stack exchange,提问作者Bittu5134
相关产品推荐
相关产品推荐

