python3:我的unicode2shiftjis脚本除了写ASCII文件外还可以工作。为什么?

2024-05-14 15:47:40 发布

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

我有一个用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开始?


Tags: 文件txt编码shiftaswithunicodeopen
1条回答
网友
1楼 · 发布于 2024-05-14 15:47:40

“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自动处理并删除字节顺序标记(如果存在)。在

with open('unikanji.txt',encoding='utf-8-sig') as f:
    text = f.read()

with open('kanji.txt','w',encoding='shift-jis') as f:
    f.write(text)

相关问题 更多 >

    热门问题