Hel*_*nar 9 python case-sensitive
我想使用内置函数(如upper()和capitalize())转换UTF-8字符串.
例如:
>>> mystring = "i??ü?"
>>> print mystring.upper()
I??ü? # should be ???ÜI instead.
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
Ign*_*ams 14
不要对编码的字符串执行操作; unicode首先解码.
>>> mystring = "i??ü?"
>>> print mystring.decode('utf-8').upper()
I??ÜI
Run Code Online (Sandbox Code Playgroud)
作为一般策略,最好始终将文本保留为内存中的Unicode:在输入时对其进行解码,并在需要输出时准确编码,如果在输入时有特定的编码要求和/或输入时间.
即使您不选择采用这种一般策略(并且您应该!),执行所需任务的唯一合理方法仍然是再次进行解码,处理,编码 - 永远不要对编码形式起作用.即:
mystring = "i??ü?"
print mystring.decode('utf-8').upper().encode('utf-8')
Run Code Online (Sandbox Code Playgroud)
假设您在赋值和输出时受限于编码字符串.(不幸的是,输出约束是现实的,分配约束不是 - 只是这样做mystring = u"i??ü?",从一开始就使它成为unicode,至少保存自己的.decode调用! - )