0

Python を使用して JSON ファイルを解析しています。

json.loads を使用していたときにこのエラーが発生したこと

UnicodeDecodeError: 'utf8' codec can't decode byte 0xa5 in position 106:
invalid start byte

しかし、どうすればそれを回避できますか?もう一度デコードしてエンコードしますか?

¥ は中国の通貨記号ですが、どのコード カテゴリに属しているかわかりません。

ありがとう!

アップデート:

====================

私の質問は、この記号が表示された場合、どのようにエンコーディングを推測しますか.

この質問に対する答えは次のとおりです。

¥ が表示された場合、"utf-8" は機能しません。代わりに "latin-1" を試してください。この理解は正しいでしょうか?

4

2 に答える 2

0

本当の答えは、一般的なケースでは、未知のデータのエンコーディングを判断できないということです。

英語のテキストなどの文脈を考えると、c?rrupted「o」が「?」に置き換えられたなどと推測できる場合がありますが、そのような文脈がなければ、どのバイトが間違っているかさえわかりません。

あなたの特定の例では、間違った方法で質問しています。円記号が表示されている場合、データを表示するためにどのエンコーディングを使用していますか? Latin-1 の場合、0xA5 のバイト値を見ています。この値は参照できます。v , ¥ , ¸ , Ë , Í , Ñ , Ą , ą , ċ , Ĩ , Ľ , ź , Β , Ξ , ξ のいずれかを見ている可能性があります。 , Ѕ , Ц , е , ڐ , ژ , ح , ٪ , ۴ , ฅ , „ , • , ₯ , ╔ , ﺄ 、またはマルチバイトエンコーディング。

未知のデータを作成したプログラムまたは組織が利用できる場合は、人々と話をしたり、ソフトウェアを試したりすることができます。しかし、信頼できる答えが見つからない場合は、ただ推測するか、あきらめてしまいます。

最新のフォーマットが既知のエンコーディングを必要とし、明らかにそれに違反する入力を拒否するのには理由があります。

于 2014-12-06T07:32:29.627 に答える