我有一个文件(sample.txt
),其中包含以下文字(在utf-8
中):
ولدخألتيوقففيالشارعيقولاللهيلعنإليبيأخذكبيتفلالعافيه˘̩̩⌣˘̩̩يأخيحستالمملدرجهديأنامزعجه˘̩̩⌣˘̩̩حرامتحطيمولدخألتيوقففيالشارعيقولاللهيلعنإليبيأخذكبيتفلالعافيه˘̩̩⌣˘ ̩̩يأخيحستالمملدرجهديأنامزعجه˘̩̩⌣˘̩̩حرامتحطيم
当我执行以下操作时:
>>> x = open('sample.txt').read().decode('utf-8')
>>> x
u'\ufeff\u0648\u0644\u062f \u062e\u0623\u0644\u062a\u064a \u0648\u0642\u0641 \u0641\u064a \u0627\u0644\u0634\u0627\u0631\u0639 \u064a\u0642\u0648\u0644 \u0627\u
0644\u0644\u0647 \u064a\u0644\u0639\u0646 \u0625\u0644\u064a \u0628\u064a\u0623\u062e\u0630\u0643 \u0628\u064a\u062a\u0641\u0644 \u0627\u0644\u0639\u0627\u0641\
u064a\u0647 \u02d8\u0329\u0329\u2323\u02d8\u0329\u0329 \u064a \u0623\u062e\u064a \u062d\u0633 \u062a\u0627\u0644\u0645\u0645 \u0644\u062f\u0631\u062c\u0647 \u0
62f\u064a \u0623\u0646\u0627 \u0645\u0632\u0639\u062c\u0647 \u02d8\u0329\u0329\u2323\u02d8\u0329\u0329 \u062d\u0631\u0627\u0645 \u062a\u062d\u0637\u064a\u0645\
ufeff\u0648\u0644\u062f \u062e\u0623\u0644\u062a\u064a \u0648\u0642\u0641 \u0641\u064a \u0627\u0644\u0634\u0627\u0631\u0639 \u064a\u0642\u0648\u0644 \u0627\u064
4\u0644\u0647 \u064a\u0644\u0639\u0646 \u0625\u0644\u064a \u0628\u064a\u0623\u062e\u0630\u0643 \u0628\u064a\u062a\u0641\u0644 \u0627\u0644\u0639\u0627\u0641\u06
4a\u0647 \u02d8\u0329\u0329\u2323\u02d8\u0329\u0329 \u064a \u0623\u062e\u064a \u062d\u0633 \u062a\u0627\u0644\u0645\u0645 \u0644\u062f\u0631\u062c\u0647 \u062f
\u064a \u0623\u0646\u0627 \u0645\u0632\u0639\u062c\u0647 \u02d8\u0329\u0329\u2323\u02d8\u0329\u0329 \u062d\u0631\u0627\u0645 \u062a\u062d\u0637\u064a\u0645\n'
>>> open('sample.txt', 'a').write('\n{0}\n'.format(x.encode('utf-8')))
它在文件中写入相同的行。我可以用文本编辑器打开它,两者都是一样的,但是......
如果我这样做:
print x.encode('utf-8')
我得到以下文字:
n + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ä+º+ä+ä+ç+è+ä+ | +å+Ñ+ä+è+¿+è+ú+«+ | +â+¿+è+¬+ü+ä+º+ä + | +º+ü+è+ç-ÿ||||î-ÿ|||| +è+ú+«+è+¡+ | +¬+º+ä+à+à+ä+»+ | +¼+ç+»+è+ú+å+º+à+ | + | +¼+ç-ÿ||||Gîú-ÿ||| + +¡+ | +º+à+¬+¡ +++è+àn+++ê+ä+»+«+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +ê+ä+º+ä+ä+ç+è+ä+ + + + + + + + + + + + + + + + + + + + + + + +ä+ | +º+ü+è+ç-ÿ||||î-ÿ|||| +è+ú+«+è+¡+ | +¬+º+ä+à+à+ä+ »+ | +¼+ç+»+è+ú+å+º+à+ | + | +¼+ç-ÿ||||Gîú-ÿ||| + + + + + + + + + +¡+++ E + A
有关正在发生的事情的任何想法?
答案 0 :(得分:0)
Windows cmd.exe编码不是'utf-8'
。我的是'mbcs'
。
您可以使用以下方法检查您的Windows编码:
>>> import sys
>>> sys.getfilesystemencoding()
因此您可以使用以下代码打印x:
>>> import sys
>>> print x.encode(sys.getfilesystemencoding())