2016-04-21 7 views
0

私は別のユーザが作業していたXLSXドキュメントを与えられました。そして、カジュアルインスペクションから、エンコーディングが完全に破棄されたように見えます。 Excel 2011を使用してXLSXファイルを開き、ドキュメントをWindows CSVファイルとして保存したので、スクリプトを実行してエンコードされた内容を把握することができました。しかし、これを行うと、私は自分自身がさらに混乱していることがわかりました。XLSXドキュメントのバースドエンコーディング - これはどのようなエンコーディングですか?

0-127のASCII範囲はすべて正しいと判読可能です。次に、CSVファイル全体を解析するスクリプトを作成し、80からffまでのバイトを持つ出力セルだけを作成しました。様々な細胞を見て、空白を埋めることによって、私は私が次の変換を発見したと考えている - 彼らはすべて100%正確ではないかもしれない:

  • e5 ca =>空白
  • cc 5f => AとHölzlestr
  • ジャンブノワ 012のよう
  • cc a8 => IにあるOジャンフランソワ
  • cc a6 =でBättner
  • cc a4 =>のようなC>
  • cc a9 => Eとデュプレで
  • cc ac => Eとエレーヌに
  • cc b1 =、> N
  • cc c1 => Aと
  • cc d9 => SSムッラーと同様とチャベスムニョスのようまた

エミールのようAuerstraße

  • cc e4 => E、接頭cc c4 e5がデータに複数回現れ、と同じものにマップされているようです。たとえば、cc c4 e5 c1は、cc c1と同じ文字(á)にマッピングされます。

    これはすべて同じエンコードではないかもしれません。このXLSXドキュメントはオンラインメーリングリストに含まれていたデータに基づいており、メーリングリストのさまざまなデータソースには異なるエンコードがある可能性があります。 ..

    EDIT解決策の1つは、これらのフィールドの多くがMacRomanとしてエンコードされたWindows-1252として解釈されるUTF-8であるように見えるということです。私はMacRomanをWindows-1252に戻すことができ、有効なUTF-8バイトシーケンスを取得しました。しかし、これはすべてのケースをカバーしているわけではありません... cc c4 e5シーケンスを説明していません。上の表のエンコーディングの1つは、オフベースであると推測されています - cc 5fは逆にするとäに変わりません。しかし、私は実際にはcc 5fのようないくつかのエンコーディングがあることを発見しました。ここで5fは非常に多くの来ているというのが私の以前の戦略が解読できなかった2バイト文字列...

    4a 65 74 74 cc c4 e5 f8 cc e2 e5 c0 cc e2 e5 5f

    48 cc 5f e5 5f e5 5f cc 5f e5 a6 e5 a8 65 72

    は...

  • +0

    異なるエンコードの問題があった場合、それらはソースに表示されます。 1つの文書に2つの異なるエンコーディングを持つことはできません。最初にソースを確認してください。 [編集]おそらく、そのファイルの編集されたコピーに公開共有へのリンクを投稿することができます。 – Jeeped

    +0

    1つのドキュメントに2つの異なるエンコーディングを設定することはできませんが、異なるエンコーディングのデータを持つことができます。ファイルはISO8859-1ですが、1行に誤ってエンコードされ誤ってエンコードされる可能性があります。 .say ... JISデータを他のものにシフトします。 – AlexMax

    答えて

    0

    Macのようなものはある時点で関与している可能性があり、そのパスはutf-8 - > cp125(2/4) - > mac_romanのようなものでした。

    >>> for char in chars[1:]: 
        print(char, hexlify(char.encode("utf-8").decode("cp1252").encode("mac_roman"))) 
    ...  
    ç b'cca4' 
    ö b'cca6' 
    î b'cca8' 
    é b'cca9' 
    è b'ccac' 
    ñ b'ccb1' 
    á b'ccc1' 
    ß b'ccd9' 
    É b'cce4' 
    

    これはäを説明することはできませんが、私はそれはあなたの割り当てのほとんどは、おそらく右であることを確認思います。

    +0

    これは実際には少し意味があります。このデータのソースは、それをUTF-8としてエンコードすると主張していますが、ソースからXLSXへのエクスポートが完了したときに、ExcelはそれをWindows-1252として扱いました。私はその後、Excelの文書を開いて、CSVとしてエクスポートしました.Web上のさまざまな情報源によれば、ExcelがMacRomanでこれを行うと主張しています。 – AlexMax

    +0

    このリバースエンコーディングは実際にはかなり良いものでした。私が推測できなかったいくつかの文字を私に渡しました。しかし、正しくデコードされない他のフィールドがいくつかあるので、他の誤ったエンコーディングがあったという私の疑惑は正しかった。特にcc c4 e5バイトはデコードされていないようです。 – AlexMax

    関連する問題