写作业时遇到一个问题:
程序打印一个字符串,暂且记为元素1,其中包含中文;另外还打印了一个list,list的元素也是中文字符,记该list为元素2。运行时总是显示有乱码,Python文件已经设置了# -*- coding: utf-8 -*-。网上找了些解决方法,比如设置setting-->file encoding-->IDE encoding=utf-8,project encoding=utf-8。仍然无效。具体表现为,均设置为utf-8,元素2不能正常显示,设置为project encoding=GBK,元素2能够正常显示,但是元素1又显示为乱码。总之不管怎么设置,总是不能全部正常显示。
网上搜索了一个说明,感觉比较有用,先记录下
- 源码文件用coding: utf-8指定编码并把文件保存为utf-8格式
- 为了作为__main__模块执行时不出不必要的错误,统一使用\n换行
- 如果需要在源码内嵌入汉字等非ascii字符,建议使用u前缀作为unicode字符串,这样在print时可以可以不做编码转换,
- 否则如果控制台编码与源文件编码不一致就必须显式转换,通过locale.getdefaultlocale()可以获取系统语言和编码
- 涉及文件路径的最好转换为sys.getfilesystemencoding()编码
- unicode字符串在写入文件时必须转换为某种字节编码
- json默认支持utf-8编码
- 尽量用utf-8和unicode,除了前面说的文件路径和写入文件等少数情况