我有一个用Unicode日文写的文件,我想把它转换成Shift-JIS,然后把它打印成Shift-JIS编码的文件。我这样做:
with open("unikanji.txt", 'rb') as unikanjif:
unikanji = unikanjif.read()
sjskanji = unikanji.decode().encode('shift-jis')
with open("kanji.txt", 'wb') as sjskanjif:
sjskanjif.write(sjskanji)
除了我打开的时候汉字.txt它总是以Ansi文件打开,而不是Shift-JIS,我看到的是misc字符而不是日语。如果我手动将文件编码更改为Shift JIS,那么misc字符将变成正确的日语字符。如何让我的程序创建文件作为Shift-JIS开始?
“ANSI”是微软默认的本地化编码的术语,它根据使用的Windows的本地化版本而变化。像记事本这样的Microsoft程序对文本文件的编码假定为“ANSI”,除非它以字节顺序标记开头。Microsoft记事本可识别UTF-8、UTF-16LE和UTF-16BE BOM表。在
Shift-JIS是一种本地化编码,因此您必须使用Notepad++之类的编辑器,并手动将其配置为Shift-JIS。您编写的文件是Shift-JIS编码的,但是除非您使用的编辑器具有某种试探性来检测编码,否则必须手动配置它。您还可以使用日语窗口或更改当前Windows版本中的本地化默认值,Shift JIS可能是ANSI默认值。在
转换的方式可以更直接一点。下面假设原始文件是UTF-8,目标文件是shift-jis。
utf-8-sig
自动处理并删除字节顺序标记(如果存在)。在相关问题 更多 >
编程相关推荐