1. 程式人生 > >編碼格式-Ascii、Default、Unicode、BigEndianUnicode、UTF7、UTF8

編碼格式-Ascii、Default、Unicode、BigEndianUnicode、UTF7、UTF8

        static void Main(string[] args)
        {
            //要了解編碼格式,首先必須理清兩個概念:一個是什麼是字符集;另一個是什麼是編碼格式。
            //字符集:是一個字元和數字(這個數字也可以稱之為程式碼號)的對應表,表示每一個字元都對應著一個數字(其實它就是一張表)
            //編碼格式:是指這些字元對應的數字在計算機中如何儲存
            //常見的字符集有:Ascii、GB2312(簡體,到後來的GB18030)、Big5(繁體)、MBCS、Unicode
            //常見的編碼格式有:Ascii、ANSI(MBCS)、Unicode(LittleEndian,小頭)、BigEndainUnicode(大頭)、UTF7、UTF8、UTF16、UTF32
            //像GB2312、GB18030、Big5也有自己編碼格式
            //以下都以"測試ceshi"為例對各種編碼格式進行測試
            
            //1、ASCII編碼格式(一個字元一個位元組)
            //{Ascii是算最早的一種字符集,一個字元用一個位元組來表示,不過它只能表示部分字元,
            //   像中文及其他國家的一些字元並不能表示}
            //   Ascii字符集下的Ascii編碼格式:
            //以下等效   //System.Text.Encoding有這些編碼方式Default.ASCII.Unicode.UTF32.UTF7.UTF8
            string msg = "測試ceshi";//7個字元
            string receive = "";
            List<byte> lst=new List<byte>();
            lst.AddRange(System.Text.Encoding.ASCII.GetBytes(msg));
            lst.AddRange(System.Text.ASCIIEncoding.ASCII.GetBytes(msg));     // ASCIIEncoding : Encoding
            lst.AddRange(System.Text.UTF8Encoding.ASCII.GetBytes(msg));      //UTF8Encoding : Encoding
            lst.AddRange(System.Text.UnicodeEncoding.ASCII.GetBytes(msg));   // UnicodeEncoding : Encoding
            lst.AddRange(System.Text.UTF32Encoding.ASCII.GetBytes(msg));     //UTF32Encoding : Encoding
            lst.AddRange(System.Text.UTF7Encoding.ASCII.GetBytes(msg));      //UTF7Encoding : Encoding
            //GetBytes實際都執行的Encoding類中的方法,
            //對中文的處理結果都是以0x3F(63)返回
            //轉化出來是亂碼  //??ceshi??ceshi??ceshi??ceshi??ceshi??ceshi
            string str2 = System.Text.Encoding.ASCII.GetString(lst.ToArray());
            //3F-3F-63-65-73-68-69-
            //3F-3F-63-65-73-68-69-
            //3F-3F-63-65-73-68-69-
            //3F-3F-63-65-73-68-69-
            //3F-3F-63-65-73-68-69-
            //3F-3F-63-65-73-68-69  42byte
            receive = BitConverter.ToString(lst.ToArray());
         
          
           /* {基於Ascii字符集的缺點,各國為了表示自己國家的字元,都出現了自己的一套編碼方案,像我國的GB18030(簡體)、
            * Big5(繁體)等;為了相容各國的編碼方案,就出現了ANSI(即MBCS)字符集,MBCS用多位元組表示,比如英文用1個位元組表示,
            * 漢字用兩個位元組表示),算是Unicode字符集的前身}*/
           /* {Unicode字符集才真正統一了世界各國的編碼方案,對世界上所有的字元進行了重新編碼,
            * 一個字元用2個位元組表示(即UCS2);UCS4顧名思義就是一個字元用4個位元組;
              像Unicode(LittleEndian,小頭)、BigEndainUnicode(大頭)、
            * UTF7、UTF8、UTF16、UTF32都是以Unicode字符集為基礎進行編碼格式的}
              Unicode和BigEndianUnicode都是用2個位元組對一個字元進行編碼格式;只不過它們儲存字元的順序正好相反*/
            //2、Unicode編碼格式(一個字元兩個位元組):
            List<byte> listmsg = new List<byte>(System.Text.Encoding.Unicode.GetBytes(msg));//小頭
            receive = BitConverter.ToString(listmsg.ToArray());
            //(14byte)
            //str=4B-6D-D5-8B-  63-00-65-00-73-00-68-00-69-00 (測=4B 6D,c=63 00 一個字元兩個位元組)
            List<byte> listmsgB = new List<byte>(System.Text.Encoding.BigEndianUnicode.GetBytes(msg));//大頭
            receive = BitConverter.ToString(listmsgB.ToArray());
            //(14byte)
            //str=6D-4B-8B-D5-  00-63-00-65-00-73-00-68-00-69(順序相反)

            //3、UTF7編碼格式(漢字4byte,英文1byte),目前主要用於郵件方面:
            listmsg = new List<byte>(System.Text.Encoding.UTF7.GetBytes(msg));
            receive = BitConverter.ToString(listmsg.ToArray());
            //(13byte)2B-62-55-75-4C-31-51-2D-  63-65-73-68-69

            //4、UTF8編碼格式(漢字3byte,英文1byte),//UTF8編碼格式,目前是最常用的
            //轉化為byte
           listmsg = new List<byte>(System.Text.Encoding.UTF8.GetBytes(msg));
           //轉化為string
           receive = System.Text.Encoding.UTF8.GetString(listmsg.ToArray());   //轉化回來
           receive = BitConverter.ToString(listmsg.ToArray());                 //十六進位制字串
           //E6-B5-8B-E8-AF-95-  63-65-73-68-69

            byte[] Length = BitConverter.GetBytes(0x7D02);
            

            Console.ReadLine();
        }

http://technet.microsoft.com/zh-cn/magazine/system.text.encoding(VS.80).aspx

http://ymg97526.blog.163.com/blog/static/173658160201093011532853/

....

相關推薦

編碼格式-AsciiDefaultUnicodeBigEndianUnicodeUTF7UTF8

static void Main(string[] args) { //要了解編碼格式,首先必須理清兩個概念:一個是什麼是字符集;另一個是什麼是編碼格式。 //字符集:是一個字元和數字(這個數字

使用python將用ASCII表示的16進位制unicode編碼ASCII字串轉換為unicode字串

漢字“你”的unicode編碼為u'/u4F60',將該編碼用ASCII字元表示為字串“4F60”。按照這樣的規則將一字串編碼後,如何還原為unicode字串?可以通過使用兩個Python內建的函式來簡單解決這個問題。    int( [x [, radix] ]) —— 該

編碼格式簡介:ASCIIANSIGBKGB2312GB18030和UnicodeUTF-8,BOM頭

family 用兩個 圖片 and 正是 全球化 asc 即使 little 編碼格式簡介:ASCII碼、ANSI、GBK、GB2312、GB18030和Unicode、UTF-8,BOM頭 二進制: 只有0和1。 十進制、十六進制、八進制: 計算機其實挺笨的,它只

所謂編碼--泛談ASCIIUnicodeUTF8UTF16UCS-2等編碼格式

dia 做了 enter log 一起 數量 字符編碼 bmp src   最近在看nodejs的源碼,看到stream的實現裏面滿地都是encoding,不由想起以前看過的一篇文章——在前面的隨筆裏面有提到過——阮一峰老師的《字符編碼筆記:ASCII,Unicode和UT

GB2312GBKISO-8859-1ASCIIUnicodeUTF-8各種編碼格式詳解(終於搞懂了)

從計算機編碼歷史這條主線來理解各種編碼格式 計算機發明於歐美語系世界,最初只需要處理英文字母的編碼就可以了,也就是ISO-8859-1編碼規範;後來傳到中國,原有的編碼規範不能識別中文,於是發展出了GB2312、GBK等格式來編碼中文,同樣的對於阿拉伯語系、德俄西班牙之類的也會有其相應的編碼

編碼歷史ASCIIUnicodeutf-8和GBK

英文字母 英文 全世界 兩個 編碼 中國 歷史 1的個數 包含 ASCII編碼:用來表示所有的大寫和小寫字母,數字0 到9、標點符號, 以及在美式英語中使用的特殊控制字符,一個字符共8位,占一個字節。 ASCII編碼是由美國國家標準協會制定的標準的單字節字符編碼方案,用來存

字符編碼ASCIIUnicode與UTF-8的理解

F5 標準化 一般來說 簡書 打開文件 說了 tps can 常用 首先我們先要明白的兩點是:1、計算機中的信息都是由二進制的0和1儲存的;2、我們再計算機屏幕上看到的各種字符都是計算機系統按照一定的規則將二進制數字轉換而來的。 一、基本概念。 1、字符集(charse

【轉載】字元編碼ASCIIUnicode和UTF-8的區別

1. ASCII碼 我們知道,在計算機內部,所有的資訊最終都表示為一個二進位制的字串。每一個二進位制位(bit)有0和1兩種狀態,因此八個二進位制位就可以組合出256種狀態,這被稱為一個位元組(byte)。也就是說,一個位元組一共可以用來表示256種不同的狀態,每一個狀態對應一個符

三種常見字元編碼ASCIIUnicode和UTF-8

什麼是字元編碼? 計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位元(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進位制11111111=十進位制255),如果要表示更大的整數,就必須用更多的位元組。比如

關於字元編碼asciiunicode與utf-8

轉自:https://foofish.net/unicode_utf-8.html   阮一峰老師對普及計算機基礎技術功不可沒,但畢竟老師不是神,因此也避免不了對某些概念有一些錯誤的理解,《字元編碼筆記:ASCII,Unicode 和 UTF-8 》 是阮老師10年前寫的一篇關於字元編

字元編碼ASCIIUnicode和UTF-8

一、什麼是字元編碼?        字元編碼(英語:Character encoding)也稱字集碼,是把字符集中的字元編碼為指定集合中某一物件(例如:位元模式、自然數序列、8位組或者電脈衝),以便文字在計算機中儲存和通過通訊

編碼方式ASCIIUnicode和UTF-8的區別及聯絡

最早的計算機在設計時採用8個位元(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進位制11111111=十進位制255),如果要表示更大的整數,就必須用更多的位元組。比如兩個位元組可以表示的最大整數是65535,4個位元組可以表示的最大整

字元編碼ASCIIUnicodeUTF-8

  網際網路時代,知乎大V通過段子抖機靈,公眾號大V通過雞湯獲得關注,微博大V通過新聞搶眼球,我們作為普通看客則刷的不亦樂乎。但是這些文章都有一個不引人注意的共同點,那就是它們都是由字元組成的(好吧,果然說的是廢話☺)。字元君,也就是今天要講的主角。   這一

字串和編碼ASCII UnicodeUTF-8)

計算機只能處理數字,如果要處理文字,就必須先把文字轉換為數字才能處理。最早的計算機在設計時採用8個位元(bit)作為一個位元組(byte),所以,一個位元組能表示的最大的整數就是255(二進位制11111111=十進位制255),如果要表示更大的整數,就必須用更多的位元組。

編碼轉換(ASCIIUnicodeUnicode和中文相互轉換)

參照http://tool.chinaz.com/Tools/Unicode.aspx,用C#做一個編碼轉換的小工具。程式碼如下:     /// <summary>     /// 編碼轉換工具     /// 作者:Sunny906     /// 日期:2

ASCIIUnicode編碼對照表 —— ASCII控制字元 Unicode編碼 字元編碼的前世今生

ASCII控制字元  Unicode編碼ASCII(American Standard Code for Information Interchange,美國資訊互換標準程式碼,ASCⅡ)是基於拉丁字母的一套電腦編碼系統。它主要用於顯示現代英語和其他西歐語言。它是現今最通用的

【字元編碼ASCIIUnicode和UTF-8

1. ASCII碼 我們知道,在計算機內部,所有的資訊最終都表示為一個二進位制的字串。每一個二進位制位(bit)有0和1兩種狀態,因此八個二進位制位就可以組合出256種狀態,這被稱為一個位元組(byte)。也就是說,一個位元組一共可以用來表示256種不同的狀態,每一個狀態對

轉 音視頻封裝格式編碼格式知識

flash swf 開發 ng- 多個 rate .com 流媒體 window 常見的AVI、RMVB、MKV、ASF、WMV、MP4、3GP、FLV等文件其實只能算是一種封裝標準。 一個完整的視頻文件是由音頻和視頻2部分組成的。H264、Xvid等就是視頻編碼格式

mysql中數據庫與數據表編碼格式的查看創建及修改

utf8 auth body int bar variable variables 如果 constrain 一、查看數據庫編碼格式 ? 1 mysql> show variables like ‘character_set_database‘;

新版谷歌瀏覽器查找改變編碼格式

後臺 找不到 什麽 繼續 今天 判斷 瀏覽器 好用 lan 今天,無意中在解決一個亂碼問題,後臺是有過判斷解決兼容性問題,但是有個別電腦還是有亂碼問題,就去想改變下前臺的編碼格式,突然發現一向好用的谷歌,居然找不到編碼格式了! 百度提供的解決方案:http://jingy