「�」から「くんじん」までのエラーコードをご案内します。

5文字の四行詩から始まりますが、その裏に何が隠されているかご存知ですか?

ナイフを2本持っている

口が熱く叫ぶ

何千もの花を踏んで

何事も笑顔で見てください

� それは何ですか?

少し前にシトウ兄弟が書いたこの記事では、あなたもこの単純な文字列の穴に陥る可能性があり、文字エンコードの問題により穴を踏み続けた経験を伝えています。記事中には魔法の文字「�」があります。

実際、この「�」は有名な WeChat など、どこにでもあります。

微信で

別の例として、表紙の写真では、単価 22 元が「Kun jin kao jin kao」で、その後は Baidu だけです。

遍在する

この問題を明確にするには、コーディングから始める必要があります。

コンピューターの目にはすべて 2 進数であり、どの 2 進数がどのシンボルを表すために使用されるか、これがエンコードであるためです。コーディングが複雑すぎるとは思わないでください。実際には非常に単純なマッピングです。

たとえば、よく知られている ASCII コードは 2 進数 0100 0001 を指定します。これは 10 進数で 65 であり、大文字の A を意味します。

ASCIIエンコーディング

� もコード化された文字であり、上記の A と同様に、UNICODE エンコード方式の特殊文字、つまり 0xFFFD (65533) であり、セマンティクスはプレースホルダーであり、このエンコード システムを表現するために使用されます。分からないよ。

たとえば、前の記事の実験のスクリーンショットでは、赤丸で囲まれた対応する文字は UTF-8 エンコーディングを知らないため、UNICODE の定義に従って、統一されたプレースホルダー - 0xFFFD (65533) を使用する必要があります。急行。

なぜ「くんじんコピー」があるのでしょうか?

以下の図に示すように、「Programmer Stone」のバイナリ コードに対応する部分をインターセプトした前の例を続けてみましょう。

上の図に示すように、UTF-8 の 18 行目のバイト配列 new byte[] {-25, -119, -25, -116} はそれを認識していないため、プレースホルダーでのみ置き換えることができます。 。

��

この種の状況は、コード変換のプロセスでは比較的よくあることですが、双方が明確に通信していないと、確かにお互いのことを認識できなくなることがよくあります。

中国語の一般的な文字エンコーディングは GBK ですが、現時点では事前に明確に議論されていないため、デフォルトで GBK に従ったエンコーディングを示します。

「クンジンコピー」はこちら

驚いたのか、そうでないのか、驚いたのか、そうでないのか…

実際には、UTF-8 でエンコードすると 0xEFBFBD (つまり、上記のバイト配列 [-17, -65, -67]) となり、その 2 つを組み合わせたものが 0xEFBFBDEFBFBD となるためです。上記のバイト配列 [-17、-65、-67、-17、-65、-67]。

GBK コードは依然として 2 バイト コード化スキームを採用しているため、上記の 6 バイト 0xEFBFBDEFBFBD は 3 つの 2 バイト文字、つまり 0xEFBF、0xBDEF、および 0xBFBD に分割されます。)、コピー (0xBFBD)。

おすすめ

転載: blog.csdn.net/vcit102/article/details/131736949