1. 程式人生 > >關於utf-8,utf-7,unicode幾種編碼的區別

關於utf-8,utf-7,unicode幾種編碼的區別

今天上csdn論壇時看到一個關於utf-8,utf-7......幾種編碼的區別,說法不一,雖然經常使用這幾種編碼,咋一想,還真有點模糊,於是百度一下,找了一些相關文章,總結如下(僅代表個人觀點):

unicode :

每個字元2個位元組

utf-8:

英文字元即能用8位表示的字元用1個位元組表示

 能用8 到 11位 表示的字元用2個位元組表示

 能用12 到 16 位表示的字元用2個位元組表示

utf-7:

遇英語字母、數字和常見符號直接用8位表示(不過我也沒搞清楚什麼時常見符號,如"&"符就會當成非常見字元。。。)

其他的符號串用+-來標記始終,如"a中中a"

在遇到中時會如下編碼

a的編碼    +的編碼  中的編碼 中的編碼 -的編碼 a的編碼

共6個位元組。。。

測試程式碼

 a ="a中中a";           
            
byte[] bb = Encoding.UTF8.GetBytes(a);
            Console.WriteLine(
"長度:"+ bb.Length);
            
foreach (byte bbb in bb)
            
{
                Console.Write(bbb.ToString()
+""); 
            }

             bb 
= Encoding.UTF7.GetBytes(a);
             Console.WriteLine();
             Console.WriteLine(
"長度:"+bb.Length);
            
foreach (byte bbb in bb)
            
{
                Console.Write(bbb.ToString() 
+"");
            }

            bb 
= Encoding.ASCII.GetBytes(a);
            Console.WriteLine();
            Console.WriteLine(
"長度:"+ bb.Length);
            
foreach (byte bbb in bb)
            
{
                Console.Write(bbb.ToString() 
+"");
            }
            
            Console.ReadLine();