在符号中
u'Capitxe1nn'
“ xe1”仅代表一个字节。
“ x”告诉你
“ e1”为十六进制。当你写
Capitxc3xa1n
到你的文件中,你有
“ xc3”。这些是4个字节,在你的代码中,你全部读取了它们。显示它们时可以看到以下内容:
>>> open('f2').read()'Capit\xc3\xa1nn'你可以看到反斜杠被反斜杠转义了。因此,你的字符串中有四个字节:
“ ”,“ x”,“ c”和
“ 3”。
编辑:
正如其他人在他们的答案中指出的那样,你只需要在编辑器中输入字符,然后你的编辑器就应处理到UTF-8的转换并保存。
如果你实际上有这种格式的字符串,则可以使用string_escape编解码器将其解码为普通字符串:
In [15]: print 'Capit\xc3\xa1nn'.depre('string_escape')Capitán结果是一个以UTF-8编码的字符串,其中重音字符由
\xc3\xa1原始字符串中写入的两个字节表示。如果要使用unipre字符串,则必须使用UTF-8再次解码。
编辑:文件中没有UTF-8。实际查看其外观:
s = u'Capitxe1nn'sutf8 = s.enpre('UTF-8')open('utf-8.out', 'w').write(sutf8)将文件utf-8.out内容与使用编辑器保存的文件内容进行比较。



