如何編碼UTF-16中字符串(ö,ä,ü等)的非ascii(ascii> 127)字符,以便「é」變爲「 \ u00e9「和」Ř「變成」\ u0158「。我所做的是將char轉換爲十六進制,並用\ u00替換前兩個字符(對於UTF-16)。但這不起作用......給我垃圾價值。請幫助我一個正確的算法。將非ASCII字符編碼爲UTF-16
這裏是我寫的,但它不正確轉換:
f = open ("input.txt","r")
data = f.read()
x=list(data)
i=0
for element in x:
if ord(element)>127:
y=hex(ord(x[i]))
y=y[2:]
y='\u00'+y
x[i]=y
i=i+1
data=''.join(x)
t= open("output.txt","w")
t.write(data)
f.close()
t.close()
你之前問過這個問題,但刪除了它。我將再次解釋:瞭解Unicode和編碼*首先*。 UTF-16有兩種口味:小字節和大字節。 * UTF-16中的所有*字符編碼爲兩個字節,只處理非ASCII字符*無用*。 – 2013-03-07 16:33:24
'open(「input.txt」,「rb」)'你需要打開它來閱讀二進制文件...然後試着打印它 – 2013-03-07 16:33:39
你見過http://pymotw.com/2/codecs/嗎? – Borealid 2013-03-07 16:35:42