0

インポートする必要がある外部データがいくつかあります。入力文字列を unicode/utf8 としてエンコードするにはどうすればよいですか?

これはプローブマティックラインの例です

>>>'Compa\xf1\xeda Dominicana de Tel\xe9fonos, C. por A. - CODETEL'.encode("utf8")
トレースバック (最新の呼び出しが最後):
ファイル ""、行 1、
UnicodeDecodeError: 'ascii ' コーデックは位置 5 のバイト 0xf1 をデコードできません: 序数が範囲外です (128)

4

3 に答える 3

3

バイトをUnicode文字列に変換するには、decodeの代わりに使用しencodeます。

また、それはUTF-8ではありません。ラテン語だと思います-1

>>> print'Compa \ xf1 \ xeda Dominicana de Tel \ xe9fonos、C. por A.-CODETEL'.decode( "latin1")
CompañíaDominicanadeTeléfonos、C。por A.-CODETEL

于 2012-11-26T08:15:24.967 に答える
3

.encode("utf8")ソースがUnicode文字列であることが期待されます。デフォルトで「ascii」エンコーディングを持つ「通常の」文字列で使用しています。次のようなことをする必要があります。

original_string.decode('original_encoding').encode('utf-8')

あなたの場合、私の推測は次のようになります。

'Compa\xf1\xeda Dominicana de Tel\xe9fonos, C. por A. - CODETEL'.decode("iso8859-1").encode("utf8")
于 2012-11-26T08:15:52.343 に答える
1

encodeUnicode文字列からバイトシーケンスに変換します。 decodeバイトのシーケンスからUnicode文字列に変換します。decodeデータはすでにエンコードされているので、必要です。

より一般的には、外部ソースから文字列を読み取る場合、「ユニコード文字列」のようなものは世界中に存在しないため、常にデコードする必要があります。さまざまなエンコーディングでのそのUnicode文字列の表現のみがあります。Unicode文字列は、エンコーディングの実体媒体を介してのみ送信できるプラトン的観念のようなものです。

于 2012-11-26T08:15:59.327 に答える