我想使用内置函数(如 upper() 和 capitalize())转换 UTF-8 字符串。
例如:
>>> mystring = "işğüı"
>>> print mystring.upper()
Işğüı # should be İŞĞÜI instead.
我怎样才能解决这个问题?
我想使用内置函数(如 upper() 和 capitalize())转换 UTF-8 字符串。
例如:
>>> mystring = "işğüı"
>>> print mystring.upper()
Işğüı # should be İŞĞÜI instead.
我怎样才能解决这个问题?
不要对编码的字符串执行操作;解码到unicode
第一个。
>>> mystring = "işğüı"
>>> print mystring.decode('utf-8').upper()
IŞĞÜI
作为一般策略,最好将文本保存在内存中后始终保持为 Unicode:如果在输入时有特定的编码要求,则在输入时对其进行解码,并在需要输出时对其进行精确编码和/或输入时间。
即使您不选择采用这种通用策略(您应该这样做!),执行所需任务的唯一合理方法仍然是再次解码、处理、编码——永远不要使用编码形式。IE:
mystring = "işğüı"
print mystring.decode('utf-8').upper().encode('utf-8')
假设您在分配和输出时受限于编码字符串。(不幸的是,输出约束是现实的,分配约束不是 - 只是 do mystring = u"işğüı"
,从一开始就使其成为 unicode ,并至少为自己节省.decode
调用!-)