コーディングフォーマットの詳細

5198 ワード

皆さんは私と同じように、コードに対してずっと雲山霧カバーを感じていると信じています.知っていますか?gb 2312が中国語の符号化であることを知っていて、乱符号を見ると、符号化に問題があることがわかりますが、どこが問題なのか、なぜ問題があるのか、モンゴルを除いて、モンゴルです.特にうまくいった後、「どうしてですか」と聞かれた.自分でも知らないで、どうせそうなんだから、何でコードして何で復号するんだ.どうして、鬼は知っています.実は問題はやはり理解した後で、やっと本当にどうしてこのようにすることができて、その上符号化のこの問題、そんなに奥深くなくて、ネット上でいくつかの資料を探して、ずっと符号化の問題に対する1つの解決でしょう、最も人に理解させる資料は2つあって、1つ目:http://www.cnblogs.com/KevinYang/archive/2010/06/18/1760597.htmlこれは符号化について、私は最もはっきりしていると思います.読み始めたばかりで、自分が本当に分かったと思います.gb 2312は文字セットにすぎません.unicodeはすべての使用可能な文字のセットで、utf-8は符号化です.その文字セットはunicodeです.さらにunicodeは、gb 2312文字セットを含む全人類が合意した巨大な文字セットである.この「底気」があってから、自分の探求を始めました:1、手帳でxmlを1つ書きます.以下のようにします.
XML code

    
    
    
    
<? xml version="1.0" encoding="gb2312" ?> < root > < person > hi, </ person > </ root >

このメモ帳をutf-8形式に保存して、開いて、文字化けして、考えても考えられませんでしたが、utf-8で符号化されたファイルをgb 2312で復号して、あるutf-8文字gb 2312がなくて、きっと問題が発生します.の△この理解は間違っている!!!2、メモ帳でxmlを1つ書きます.以下のようにします.
XML code

    
    
    
    
<? xml version="1.0" encoding="utf-8" ?> < root > < person > hi, </ person > </ root >

このメモ帳をansi形式(簡体字中国語のオペレーティングシステムではgb 2312符号化)に保存し、開いて、文字化け??どうしてですか.unicode符号化にはgb 2312の文字セットが含まれているのではないでしょうか.本来なら解析できるはずなのに???(1つ目のアイデアを続けて、文字セットの大きさだけで判断するのか、間違っているのか)仕方なく、ネット上で答えを探すしかなく、2つ目の資料が現れました.http://social.msdn.microsoft.com/Forums/zh-CN/2212/thread/f656ec85-2cd0-4d6a-a207-fe30523cc5a4/この問題については、「UTF-8にはすべてのgb 2312の文字の定義が含まれているが、各文字の番号が完全に対応していないため、ページの中文字が対応できない場合がある」という答えが4階のRaymond Tang版主の答えを参照してください.これでutf-8はgb 2312の文字を解析できない理由を説明できます.しかし、この答えには問題があると思います.Raymond Tang版主が言ったように、「各文字の番号は完全に対応していない」という意味で、gb 2312の符号化とutf-8の符号化番号は異なるので、正しい文字を解析することはできません.コードが違うだけなら、少なくともあまり変わらないでしょう.差が少ないのか、漢字なのか.どうして文字化けしたの?そこで、第1の文章をよく見てみると、「GB 2312およびGBK文字セットは、最大2バイトを用いてすべての文字を符号化することを制限し、バイト順を規定している.このような符号化システムは、通常、簡単なルックアップテーブル、すなわちコードページを通じて、文字を記憶装置上のバイトストリームに直接マッピングすることができる」という問題点を発見した.一方、「各文字はUnicode文字セットにおいて一意に特定された番号(文字コード、Unicodeコードとも呼ばれる)を見つけることができるが、最終バイトストリームを決定するのは具体的な文字符号化である」という場合、utf-8によって決定される.簡単に言えば、文字ストリームが乱され、utf-8は長く符号化され、gb 2312のようにバイトストリームを解析することはできない.だから文字化けした.したがって、結局、unicodeはgb 2312を含む文字セットであるが、符号化復号方式が異なる.すなわち、utf-8符号化はルールであり、彼自身が符号化したバイトストリームは、自分のルールで復号する必要があり、一致しなければ乱符号化が発生する.これが根源です.この間、新しい文書ドキュメントに「連通」と入力して保存して開くと文字化けしてしまうという興味深いことも発見されました.詳細:http://baike.baidu.com/view/1273097.htmこの招待状は私自身の1つの総括で、いつ自分に注意することができることを忘れて、同时に私のように分からないいくつかの子供靴に対して少し助けがあることを望んで、あれらのとっくにこれらのものを深く理解している人に笑わせました.のもし私が理解していることに何か偏差があれば、皆さんに指摘してほしいです.ありがとうございます.