正在打印unicode字符的错误UTF8表示

2024-03-28 21:26:32 发布

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

我有一个文件(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')))

它在文件中写同样的行。我可以用文本编辑器打开它,两个都是一样的,但是。。。在

如果我这样做:

^{pr2}$

我得到了以下文本:

n+++ê+ä+» +«+ú+ä+¬+è +ê+é+ü +ü+è +º+ä+¦+º+¦+¦ +è+é+ê+ä +º+ä+ä+ç +è+ä+¦+å +Ñ+ä+è +¿+è+ú+«+¦+â +¿+è+¬+ü+ä +º+ä+¦+º+ü+è+ç -ÿ¦¬¦¬Gîú-ÿ¦¬¦¬ +è +ú+«+è +¡+¦ +¬+º+ä+à+à +ä+»+¦+¼+ç +»+è +ú+å+º +à+¦+¦+¼+ç -ÿ¦¬¦¬Gîú-ÿ¦¬¦¬ +¡+¦+º+à +¬+¡+++è+àn+++ê+ä+» +«+ú+ä+¬+è +ê+é+ü +ü+è +º+ä+¦+º+¦+¦ +è+é+ê+ä +º+ä+ä+ç +è+ä+¦+å +Ñ+ä+è +¿+è+ú+«+¦+â +¿+è+¬+ü+ä +º+ä+¦+º+ü+è+ç -ÿ¦¬¦¬Gîú-ÿ¦¬¦¬ +è +ú+«+è +¡+¦ +¬+º+ä+à+à +ä+»+¦+¼+ç +»+è +ú+å+º +à+¦+¦+¼+ç -ÿ¦¬¦¬Gîú-ÿ¦¬¦¬ +¡+¦+º+à +¬+¡+++è+à

你知道发生了什么吗?


Tags: u0644u0627u0648u0631u0639u062au0647u0645
1条回答
网友
1楼 · 发布于 2024-03-28 21:26:32

窗口命令行.exe编码不是'utf-8'。我的是'mbcs'。在

您可以使用以下命令检查windows编码:

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

所以你可以用这个代码打印x:

^{pr2}$

相关问题 更多 >