如何将unicode japanese从一个文件写入另一个文件?
How to write unicode japanese from a file to another file?
我有一些 json 文件,文件中有些地方有像 \u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831
这样的编码日语,我想将它们解码成日语。
问题是当我使用这个方法时:
text = '\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831'
print(text)
它打印了
本・雑誌・書籍情報
但是当我直接从文件中读取它时,例如,准备好的文件是index.json,它的内容只是:
\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831
而我使用的方法是
file = open('index.json','r')
text = file.read()
print(text)
它刚刚打印出来
\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831
我发现有点奇怪的是,当我尝试打印时:
print(file.read())
print(text)
file.read()
returns 什么都没有,就算有file.read(1)
.
编辑:我发现主要问题是当您写 text = '\u672c'
时,python 会将 \u672c
识别为单个字符。但是当你从一个文件中读取时,它会将它识别为一个包含 6 个字符的字符串。无论如何要转换它?
这里有几个问题。
假设您的文件包含以下(文字)文本:
\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831
您可以在 Python 中将其表示为
text = '\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831'
或
text = r'\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831'
要将文字转义转换为它们所代表的 Unicode 字符,您需要对其进行正确解码:
text.encode('ascii').decode('unicode-escape')
结果
本・雑誌・書籍情報
file.read()
和 file.read(1)
对您不起作用的原因是文件不会自动倒带。读入文件后,它一直在最后,直到您手动倒回它或关闭并重新打开它。
我有一些 json 文件,文件中有些地方有像 \u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831
这样的编码日语,我想将它们解码成日语。
问题是当我使用这个方法时:
text = '\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831'
print(text)
它打印了
本・雑誌・書籍情報
但是当我直接从文件中读取它时,例如,准备好的文件是index.json,它的内容只是:
\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831
而我使用的方法是
file = open('index.json','r')
text = file.read()
print(text)
它刚刚打印出来
\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831
我发现有点奇怪的是,当我尝试打印时:
print(file.read())
print(text)
file.read()
returns 什么都没有,就算有file.read(1)
.
编辑:我发现主要问题是当您写 text = '\u672c'
时,python 会将 \u672c
识别为单个字符。但是当你从一个文件中读取时,它会将它识别为一个包含 6 个字符的字符串。无论如何要转换它?
这里有几个问题。
假设您的文件包含以下(文字)文本:
\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831
您可以在 Python 中将其表示为
text = '\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831'
或
text = r'\u672c\u30fb\u96d1\u8a8c\u30fb\u66f8\u7c4d\u60c5\u5831'
要将文字转义转换为它们所代表的 Unicode 字符,您需要对其进行正确解码:
text.encode('ascii').decode('unicode-escape')
结果
本・雑誌・書籍情報
file.read()
和 file.read(1)
对您不起作用的原因是文件不会自动倒带。读入文件后,它一直在最后,直到您手动倒回它或关闭并重新打开它。