如何编码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