python读取utf8文本文件问题

2024-09-29 23:20:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python有一个关于读取和打印utf8文本文件的问题。在

我有一个测试.txt不带BOM的utf8编码。此文件包含两个字符:

大声

第一个字是中文,第二个字是日语。现在,当我使用Ulipad(python编辑器)运行以下代码来读取txt文件,并打印这两个字符。在

^{pr2}$

我犯了这个错误

"UnicodeEncodeError: 'cp950' codec can't encode character '\u58f0' in position 1:
 illegal multibyte sequence"

我发现是第二个字“声”造成的。在

但是当我使用相同的代码在python默认GUI IDLE中进行测试时,它可以毫无错误地打印这两个字符。那么,我该怎么解决这个问题呢。在

我的运行环境是python3.1,windowsxp繁体中文。在


Tags: 文件代码txt编码错误utf8bom编辑器
2条回答

打印时出现错误是因为:

(1)Ulipad正在打印到系统标准输出这是旧式MS-DOS命令提示符窗口的标准输出。 (2) 您的传统中文Windows XP使用cp950编码,这是big5加上微软的摆弄。 (3) 你说你的第二个字符是日语,这可能意味着它不是中文,因此不太可能是big5+中的有效字符。在

另一方面,IDLE正在写入自己的窗口,并且没有绑定在MS-DOS控制盘上:-)。。。所以它可以打印出更多的角色。在

声可能是日语,但它也是“声音”的简体中文(繁体聲)。cp950是繁体中文,不支持简体字。在

由于您使用的是中文版本的Windows,所以您可以将默认代码页更改为cp936(统一中文)并查看输出。在

我不熟悉Ulipad,但请尝试在Windows控制台中运行:

chcp 936

然后运行你的脚本。如果不起作用,可以通过“控制面板”、“区域和语言选项”、“高级”选项卡更改非Unicode程序的默认语言。这就是我如何在我的美式英文视窗控制台上打印中文的方法。在

更新

读到Ulipad,它说:

Multilanguage support Currently supports 4 languages: English, Spanish, Simplified Chinese and Traditional Chinese, which can be auto-detected.

也许您可以将自动检测到的繁体中文重写为简体中文,这可能会选择支持该特定字符的代码页和/或字体。因为它不支持日语,所以可能仍有一些字符无法正确显示。在

相关问题 更多 >

    热门问题