バイトシーケンスc382c2bfを含むテキストデータのソースがあります。文脈上、それは大文字のギリシャのファイ記号(Φ)であると思われます。
とにかく、どのエンコーディングが使用されているのかわかりません。このデータをUnicodeを期待するデータベースに処理するPythonスクリプトを作成していますが、この特定のデータシーケンスで例外がスローされます。
それを処理する方法について何か提案はありますか?
UTF-8として解釈され、c382は「Â」U+ 00C2、c2bfは「¿」U+ 00BFです。これはあまり意味がありませんが、技術的に有効なUTF-8データであるため、文字として報告しないでください。レベルのデータエラー。UTF-16として解釈され、それはハングル音節文字であり、エンディアンに応じてCJK統合漢字である可能性がありますが、正式には有効なデータですが、おそらく意図されたものではありません。
これは二重変換の結果のように聞こえますが、知識に基づいた推測を行うことは困難です。Φを表す場合、UTF-16形式は03A6またはA603であり、UTF-8形式はCE A6であり、実際のデータとは実際には似ていません。データの出所に関する情報は、どのトランスコーディングが発生したかを推測するのに役立つ場合があります。
それはおそらくÑ
キャラクターからの二重の変換です。
Ñ
UTF-8の文字は次のとおり0xc391
です。
LATIN-1からUTF-8に、Ñ
すでにUTF-8でエンコードされている文字を変換しようとすると、次のようになります0xc382c2bf
。
なんで?
0xc382
LATIN-1文字からのUTF-8変換です(チルダ付きのA) 0xc3
Ã
0xc2bf
LATIN-1¿
から文字を変換できない場合に取得される文字です(LATIN - 1では無効な文字です)0x91
c3 82 c2 bf
FWIW、私はからで終わった
。コードのその部分を単純に破棄することができたので、変換については掘り下げませんでした。
これは、wordpress(php)プラグインによって処理されたhtmlメールテンプレートに含まれていると言えば十分です。
理由はわかりません。しかし、おそらく風景があるかもしれません。
バイナリx0xxは0xC2x0xxに変換されます
バイナリx1xxは0xC3x0xxに変換されます
したがって、c2とc3がたくさん追加されています。
これはどこで起こりますか?ajax呼び出しのURLクエリ文字列で非ASCIIを送信すると、Flaskサーバーがこれを実行します。
$ str = mb_convert_encoding($ content、 "UTF-8"、 "UTF-16LE");を使用してutf-8に変換した後、外部utf-16ドキュメントからこの文字\ xc3\x82を受け取りました。(PHP)
元のシーケンスは0xA00x00で、コンバーターはおそらくそれをNBSPの意味に変換しました..通貨番号の千単位の区切り文字でした。nbspは\xc2\ xa0であるため、現在、次のように数千の削除があります。
$price = str_replace(["\xc2\xa0","\xc3\x82"], '', $price);