C#中的字符串及其編碼轉換


(轉自:http://blog.sina.com.cn/s/blog_498eab7d0100et7j.html)

 

根據查找的System.Text.Encoding類的屬性,方法寫了如下的轉換程序:

 1         public string UTF8ToGB2312(string str)
 2         ...{
 3             try
 4             ...{   
 5                 Encoding utf8 = Encoding.GetEncoding(65001);
 6                 Encoding gb2312 = Encoding.GetEncoding("gb2312");//Encoding.Default ,936
 7                 byte[] temp = utf8.GetBytes(str);
 8                 byte[] temp1 = Encoding.Convert(utf8, gb2312, temp);
 9                 string result = gb2312.GetString(temp1);
10                 return result;
11             }
12             catch (Exception ex)//(UnsupportedEncodingException ex)
13             ...{
14                 MessageBox.Show(ex.ToString());
15                 return null;
16             }
17         }
18         public string GB2312ToUTF8(string str)
19         ...{
20             try
21             ...{
22                 Encoding uft8 = Encoding.GetEncoding(65001);
23                 Encoding gb2312 = Encoding.GetEncoding("gb2312");
24                 byte[] temp = gb2312.GetBytes(str);
25                 MessageBox.Show("gb2312的編碼的字節個數:" + temp.Length);
26                 for (int i = 0; i < temp.Length; i++)
27                 ...{
28                     MessageBox.Show(Convert.ToUInt16(temp[i]).ToString());
29                 }   
30                 byte[] temp1 = Encoding.Convert(gb2312, uft8, temp);
31                 MessageBox.Show("uft8的編碼的字節個數:" + temp1.Length);
32                 for (int i = 0; i < temp1.Length; i++)
33                 ...{
34                     MessageBox.Show(Convert.ToUInt16(temp1[i]).ToString());
35                 }              
36                 string result = uft8.GetString(temp1);
37                 return result;
38             }
39             catch (Exception ex)//(UnsupportedEncodingException ex)
40             ...{
41                 MessageBox.Show(ex.ToString());
42                 return null;
43             }
44         }


主要使用的就是獲取編碼方式的類對象,
Encoding utf8 = Encoding.GetEncoding(65001);//使用code page
Encoding gb2312 = Encoding.GetEncoding("gb2312");//通過bodyname
獲取字符編碼字節序列:byte[] temp=utf8.GetBytes(str);
編碼方式轉換:byte[] temp1=Encoding.Convert(utf8, gb2312, temp);
獲取編碼的字符串:string str1=gb2312.GetString(temp1);
這樣即完成了字符編碼的轉換。
Encoding.Default在 簡體中文os中一般是gb2312格式

網上流傳的第二種方法:

    在使用MySql時會遇到中文亂碼的問題就此寫下面兩個函數  
         *    在寫入數據庫和從數據庫讀出時將編碼改變  
         *    author:alice  
         *    date        :2006/1/25  
      */  
      //寫入數據庫時進行轉換  
    

 1  public   string    GB2312_ISO8859(string    write)  
 2       {  
 3         //聲明字符集  
 4          System.Text.Encoding    iso8859,    gb2312;  
 5         //iso8859  
 6          iso8859   =    System.Text.Encoding.GetEncoding("iso8859-1");  
 7         //國標2312  
 8          gb2312   =    System.Text.Encoding.GetEncoding("gb2312");  
 9         byte[]    gb;  
10          gb   =    gb2312.GetBytes(write);  
11         //返回轉換后的字符  
12         return    iso8859.GetString(gb);  
13        }  
14        
15       //讀出時進行轉換  
16       public   string    ISO8859_GB2312(string    read)  
17       {  
18         //聲明字符集  
19          System.Text.Encoding    iso8859,gb2312;  
20         //iso8859  
21          iso8859         =    System.Text.Encoding.GetEncoding("iso8859-1");  
22         //國標2312  
23          gb2312   =    System.Text.Encoding.GetEncoding("gb2312");  
24         byte[]    iso;  
25          iso   =    iso8859.GetBytes(read);  
26         //返回轉換后的字符  
27         return    gb2312.GetString(iso);  
28        }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM