【发布时间】:2013-06-28 18:24:47
【问题描述】:
我对 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'),替换变音符号不起作用......
【问题讨论】:
标签: python encoding diacritics