Python无法识别Unicode。

3

我正在尝试编写一个将日本假名转换为罗马字(“シ”转换为“shi”)的脚本。以下是我的尝试:

x = u''
x = raw_input('Enter katakana: ')
x = x.replace(u'\u30B7', u'shi')

输入片假名:シ
Unicode解码错误: 'ascii'编解码器无法在位置0处解码字节0xe3: 该值不在可接受的范围内(128)

只要我在脚本中将unicode写成u'\u30B7'而不是ソ,它就应该可以处理,对吗?

1个回答

8

raw_input 返回的字符串是以字节编码形式表示的,具体取决于所使用的终端。尝试先将输入显式地解码为 Unicode 格式:

import sys
x = raw_input('Enter katakana: ').decode(sys.stdin.encoding)

你得到的错误是由于替换操作尝试通过默认的 ascii 编解码器,将字节编码的 x 转换为 Unicode,导致转换失败。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接