我对 python 还很陌生,但由于我的母语包含一些讨厌的变音符号,我不得不一开始就陷入编码是正确的噩梦。我阅读了 joelonsoftware 关于编码的文本,并了解了代码点和字母实际呈现之间的区别(以及 unicode 和编码之间的联系)。为了让我摆脱麻烦,我找到了 3 种处理变音符号的方法,但我无法决定,哪种方法适合什么情况。如果有人可以照亮它?我希望能够将文本写入文件,从中读取(或 sqlite3)并发出文本,所有这些都包括可读的变音符号......非常感谢!
# -*- coding: utf-8 -*-
import codecs
# using just u + string
with open("testutf8.txt", "w") as f:
f.write(u"Österreichs Kapitän")
with open("testutf8.txt", "r") as f:
print f.read()
# using encode/decode
s = u'Österreichs Kapitän'
sutf8 = s.encode('UTF-8')
with open('encode_utf-8.txt', 'w') as f2:
f2.write(sutf8)
with open('encode_utf-8.txt','r') as f2:
print f2.read().decode('UTF-8')
# using codec
with codecs.open("testcodec.txt", "w","utf-8") as f3:
f3.write(u"Österreichs Kapitän")
with codecs.open("testcodec.txt", "r","utf-8") as f3:
print f3.read()
编辑:我测试了这个(文件的内容是'Österreichs Kapitän'):
with codecs.open("testcodec.txt", "r","utf-8") as f3:
s= f3.read()
print s
s= s.replace(u"ä",u"ü")
print s
我必须在代码中的任何地方都使用 u'string' (unicode) 吗?我发现,如果我只使用空白字符串(没有'u'),替换变音符号不起作用......