0

テキストを送信する方法に関するドキュメントを備えたデバイスがあります。0x00-0x7F を使用して、アクセント付き文字、ユーロ記号などの「特殊」文字を送信します...

彼らは既存のコード ページをコピーしていくつかの変更を加えたと推測していますが、どのコード ページが私のドキュメントのコード ページに最も近いかを特定する方法がわかりません。

理論的には、これは簡単に実行できるはずです。たとえば、Á を 0x41 にマップするので、すべてのコード ページを調べて、この文字がその位置にあるコード ページを見つける方法を見つけることができれば、簡単なことです。

ただし、インターネットで見つけられるのは、私が見ているのと同じようなコード ページ ダンプへのリンク、またはヒューリスティックを使用してテキストを読み取り、最も可能性の高いコード ページを推測するソフトウェアだけです。確かに誰かが見ているコードページを調べることを可能にしましたか?

4

5 に答える 5

4

「特殊」文字に使用0x00する場合0x7F、通常の ASCII 文字をどのようにエンコードしますか?

文字 をサポートするほとんどの文字セットではÁ、そのコードポイントは 193 ( 0xC1) です。そこから 128 を引くと 65 ( 0x41) になります。たぶん、あなたの「コードページ」は、ISO-8859-1 や windows-1252 のような標準的な文字セットの上半分であり、上位ビットは 1 ではなくゼロに設定されています (つまり、それぞれから 128 を引いたものです)。

その場合、次のコードポイントの束を「上位」または「下位」エンコーディングを使用して変換する必要があるかどうかを示すために設定できるフラグが見つかると思います。そのスキームを使用するシステムは知りませんが、あなたが説明する状況について私が考えることができる最も賢明な説明です.

于 2009-01-06T14:14:21.730 に答える
1

システムのエンディアンは?おそらく、ビットオーダーを反転していますか?

于 2009-01-06T14:19:14.217 に答える
0

ほとんどのコードページでは、0x41 は通常の "A" にすぎません。標準のコードページでその位置に "Á" が含まれているとは思いません。アクセントを追加する A の前のどこかに制御文字があるか、非標準のコードページを使用している可能性があります。

「最も近いコードページ」を知っていても何の役にも立ちません。デバイスで入手したドキュメントを使用するだけで済みます。

あなたの最後の文は不可解です。「見ているコードページを調べることができる」とはどういう意味ですか?

コードページ全体を含めると、SO の人々がより役に立ち、この問題についてより多くの洞察を得ることができます。1 つのデータ ポイント 0x41=Á はあまり役に立ちません。

于 2009-01-06T10:03:09.507 に答える
0

ややランダムなアイデアですが、デバイスからかなりの量のテキストを複製できる場合は、 http://chardet.feedparser.org/detectの関数のようなものを実行してみてください。

于 2009-01-14T15:35:39.587 に答える