0

我有一个文件 ( sample.txt),其中包含以下文本 (in 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îú-ÿ¦¬¦¬ +è +ú+«+è +¡+¦ +¬+º+ä+à+à +ä+»+¦+¼ +ç +»+è +ú+å+º +à+¦+¦+¼+ç -ÿ¦¬¦¬Gîú-ÿ¦¬¦¬ +¡+¦+º+à +¬+¡+++ è+àn+++ê+ä+» +«+ú+ä+¬+è +ê+é+ü +ü+è +º+ä+¦+º+¦+¦ +è+é+ê+ ä +º+ä+ä+ç +è+ä+¦+å +Ñ+ä+è +¿+è+ú+«+¦+â +¿+è+¬+ü+ä +º+ä+ ¦+º+ü+è+ç -ÿ¦¬¦¬Gîú-ÿ¦¬¦¬ +è +ú+«+è +¡+¦ +¬+º+ä+à+à +ä+»+¦ +¼+ç +»+è +ú+å+º +à+¦+¦+¼+ç -ÿ¦¬¦¬Gîú-ÿ¦¬¦¬ +¡+¦+º+à +¬+¡+ ++è+à

对正在发生的事情有任何想法吗?

4

1 回答 1

0

Windows cmd.exe 编码不是'utf-8'. 我的是'mbcs'

您可以使用以下方法检查您的 Windows 编码:

>>> import sys
>>> sys.getfilesystemencoding()

因此,您可以使用以下代码打印 x:

>>> import sys
>>> print x.encode(sys.getfilesystemencoding())
于 2013-04-25T04:04:25.693 回答