0

sample.txt次のテキストを含むファイル ( ) があります ( 内utf-8):

ولد خألتي وقف في الشارع يقول الله يلعن إلي بيأخذك بيتفل العافيه ˘̩̩⌣˘̩̩ ي أخي حس تالمم لدرجه دي أنا مزعجه ˘̩̩⌣˘̩̩ حرام تحطيمولد خألتي وقف في الشارع يقول الله يلعن إلي بيأخذك بيتفل العافيه ˘̩̩⌣˘̩̩ ي أخي حس تالمم لدرجه دي أنا مزعجheat ˘̩̩⌣˘̩̩ حرام تحطيم

私が次のことをするとき:

>>> 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 に答える