3

日本語のカタカナをローマ字(「し」から「し」)に変換するスクリプトを作成しようとしています。これが私が試していることです:

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

カタカナを入力してください:シ<br> UnicodeDecodeError:'ascii'コーデックは位置0のバイト0xe3をデコードできません:序数が範囲内にありません(128)

スクリプトにユニコードがu'\u30B7'として書かれていて、シではない限り、それを処理できるはずですよね?

4

1 に答える 1

8

raw_input入力された文字列を、使用する端末によって異なるバイト エンコード形式で返します。最初に、入力を明示的に Unicode にデコードしてみてください。

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

xあなたが得るエラーは、デフォルトのasciiコーデックを介してバイトエンコードされたものを単純にUnicodeに変換しようとする置換からのものです。

于 2012-11-25T23:16:21.523 に答える