我正在尝试制作一个将日本片假名转换为romaji(“シ”到“shi”)的脚本。这是我正在尝试的:
x = u''
x = raw_input('Enter katakana: ')
x = x.replace(u'\u30B7', u'shi')
输入片假名:シ
UnicodeDecodeError:'ascii'编解码器无法解码位置0的字节0xe3:序数不在范围内(128)
只要我的脚本中的unicode写成u'\ u30B7'而不是シ,它应该能够处理它,对吗?
答案 0 :(得分:8)
raw_input
以字节编码形式返回输入的字符串,该形式因使用的终端而异。尝试使用以下命令将输入显式解码为Unicode:
import sys
x = raw_input('Enter katakana: ').decode(sys.stdin.encoding)
你得到的错误来自于尝试通过默认的x
编解码器将字节编码的ascii
天真地转换为Unicode。