Sid*_*kan 9 python unicode encoding
我知道对于Python <3,字符串'Plants vs. Zombies‰2'的unicode编码如下:
u"Plants vs. Zombies䋢 2".encode("utf-8")
Run Code Online (Sandbox Code Playgroud)
如果我有一个变量(比如appName)而不是字符串,我可以这样做:
appName = "Plants vs. Zombies䋢 2"
u+appName.encode("utf-8")
Run Code Online (Sandbox Code Playgroud)
对于:
appName = appName.encode('utf-8');
'ascii' codec can't decode byte 0xe4 in position 18: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)
Bre*_*arn 11
号的u符号是只为字符串文字.包含字符串数据u的变量不需要,因为变量包含一个对象,该对象是unicode字符串或字节字符串.(我假设这里appName包含字符串数据;如果没有,则尝试对其进行编码没有意义.首先将其转换为bytestring或unicode.)
因此,您的变量要么包含unicode字符串,要么包含字节字符串.如果它是一个unicode字符串,你可以做appName.encode("utf-8").
如果它是一个字节串,那么它已经用一些编码进行了编码.如果它已经编码为UTF-8,那么它已经是你想要的了,你不需要做任何事情.如果它在某些其他编码中并且您想要将其转换为UTF-8,则可以执行此操作appName.decode('the-existing-encoding').encode("utf-8").
请注意,如果您执行在编辑过的问题中显示的内容,结果可能与您的预期不同.你有:
appName = "Plants vs. Zombies䋢 2"
Run Code Online (Sandbox Code Playgroud)
如果没有u字符串文字,则在某些编码中创建了一个字节串,即源文件的编码.如果你的源文件不是UTF-8,那么你就是我上面描述的最后一种情况.在将其创建为非unicode之后,无法"只创建一个字符串unicode".当您将其创建为非unicode时,您将以特定编码创建它,并且您必须知道将其解码为unicode的编码(因此您可以根据需要将其编码为其他编码).
| 归档时间: |
|
| 查看次数: |
12233 次 |
| 最近记录: |