[C#/asp.net]文字列符号化、復号化および符号化変換

2441 ワード

プロジェクト開発では、文字列の符号化、復号化、または符号化変換の問題に直面する友人が少なくありません.
初心者の方のために、ここでレンガを投げて説明しましょう.
C#ではSystemが一般的です.Text.Encodingは文字列符号化の問題を処理する.

1、文字列復号


string code = "00430023662f4e0095e85f884f1896c576848bed8a00";
このようなコードがありますが、どうやって認識可能な中国語に変換しますか?
経験がある人や、いろいろなコードに詳しい人は、直接見ることができるかもしれませんが、コードが分からない場合、どのようにしてこのコードを漢字に変換するのでしょうか.
string text = Encoding.UTF8.GetString(byte[] bytes);
これがUTF 8符号化であることが分かった場合、GetStringで復号することができます.
コードを知らないで、実は私たちは遍歴する方法で貧乏にすればいいです.
            string sources = "C#         ";
            string code = "00430023662f4e0095e85f884f1896c576848bed8a00";
            foreach (var encoding in Encoding.GetEncodings())
            {
                string temp_code = string.Concat(encoding.GetEncoding().GetBytes(sources).Select(item => item.ToString("x").PadLeft(2, '0')));
                if (temp_code == code)
                {
                    Console.WriteLine(temp_code);
                    Console.WriteLine(encoding.Name);
                }
            }

sources文字列がなければ、code符号化の時だけでもすべてのencodingを遍歴して、どんなencodingが正常な中国語を出力できるかを見てみましょう.
あるいは、コードを直接知っている場合:
            string code = "00430023662f4e0095e85f884f1896c576848bed8a00";
            byte[] buffer = Regex.Matches(code, "[0-9a-fA-F]{2}").Cast().Select(item => Convert.ToByte(item.Value, 16)).ToArray();
            Console.WriteLine(Encoding.BigEndianUnicode.GetString(buffer));

2、文字列コード


符号化は比較的簡単です.
string temp_code = string.Concat(encoding.GetEncoding().GetBytes(sources).Select(item => item.ToString("x").PadLeft(2, '0')));
私たちの上の復号過程では、文字列を様々な符号化方式で符号化し、既存の符号化と比較します.

3、コード変換

            byte[] buffer = Encoding.UTF8.GetBytes(sources);//               
            buffer = Encoding.Convert(Encoding.UTF8/*    */, Encoding.ASCII/*    */, buffer);

PS:
Web開発でよく遭遇するのはurl符号化、復号化の問題、urlパラメータの乱符号化などです.の
Server.UrlEncode("");
Server.UrlDecode("");
System.Web.HttpUtility.UrlEncode("");
System.Web.HttpUtility.UrlDecode("");
System.Uri.EscapeDataString("");
System.Uri.UnescapeDataString("");
これらのツールクラスは、通常、符号化、復号化に使用することができる.乱符号化は一般的に送信者と受信再生で使用される符号化が一致しないため、復号中に正しい符号化を加えればよい.