採取以下Python代碼,從而產生含有一個Unicode字符串的文本文件:Unicode文本在MS Word和Python
def writefile():
out = u'x \u2208 \u22C3A \u2192 \u2203y(x \u2208 y \u2208 A)'
fout = open("output.txt",'w')
fout.write(out.encode('UTF-8'))
fout.close()
# The string is: x ∈ ⋃A → ∃y(x ∈ y ∈ A)
如果我使用重量輕的文本編輯器,如納米(打開這個文件在終端中),TextWrangler或TextEdit,一切看起來都很好,但如果我嘗試通過MS Word打開文件(Word for Mac 2011,v14.3.9),則所有的Unicode字符都會出現亂碼。當打開文件時,Word會拋出一個詢問「將文件轉換爲:」的對話框,但每種可用的轉換方法似乎都會產生亂碼。例如:
x ∈ ⋃A → ∃y(x ∈ y ∈ A) (opening as either UTF-8 or Mac OS (Default))
x ∈ ⋃A → ∃y(x ∈ y ∈ A) (opening as MS-DOS Text)
然而,如果我打開該文件在例如TextWrangler,然後將該字符串複製到剪貼板,然後將其粘貼到MS Word中,它會正確顯示該字符串。所以有兩個問題:
1.)什麼解釋了這種行爲?即Word沒有正確顯示文件的事實,以及在Word中打開文件與從另一個程序將其內容粘貼到Word中的區別。
2.)我該如何編寫一個腳本(例如python),它接受上述utf-8文件並將其轉換爲單詞可以讀取/正確顯示的內容?
謝謝,在Python腳本中使用'fout.write(out.encode('UTF-16'))'工作。 (Word默認打開output.txt文件,如Unicode 6.0(Little-Endian),正確顯示)。但哇,這是一個惱人的錯誤。 –