有没有unicode和utf8相互转换的代码?
研究一下,想实现,编码和字符的转换并显示。 
 昨天在另一贴里解决了大部分问题,但还有部分字符没能显示正常,在EXCEL中显示正常。 
 以下代码由Jinglecat提供 
 int   n   =   int.Parse( "30E0 ",   System.Globalization.NumberStyles.AllowHexSpecifier); 
                         byte[]   bytes   =   BitConverter.GetBytes(n); 
                         string   str   =   System.Text.Encoding.Unicode.GetString(bytes);   //   输出   ム
------解决方案--------------------沙发帮忙顶
------解决方案--------------------int n = int.Parse( "30E0 ", System.Globalization.NumberStyles.AllowHexSpecifier);   
 你怎么得到这个30E0的?
------解决方案--------------------Encoding.Convert
------解决方案--------------------编码之间的转换(字节数组),编码与字符串的转换,Encoding类都有现成的方法
------解决方案--------------------Encoding.Convert(Encoding.Unicode,Encoding.UTF8,bytes)
------解决方案--------------------Encoding.Unicode.GetBytes(StringYours); 
 Encoding.Convert(Encoding.Unicode,Encoding.UTF8,bytes) 
 如果这两句你真的明白了 我想你的问题就解决了 
 这两句可以进行几乎所有需要的字符编码转换
------解决方案--------------------我做了个测试   
 string test =  "中 ";   
 byte[] unicb; 
 byte[] utf8b;   
 unicb = Encoding.Unicode.GetBytes(test); 
 Console.WriteLine( "UNICODE Encoding: {0} bytes ", unicb.Length); 
 DisplayArray(unicb);   
 utf8b = Encoding.UTF8.GetBytes(test); 
 Console.WriteLine( "UTF8 Encoding: {0} bytes ", utf8b.Length); 
 DisplayArray(utf8b);   
 其中DisplayArray函数如下: 
 static void DisplayArray(byte[] b) 
 { 
     Console.WriteLine(BitConverter.ToString(b,0)); 
     for (int i = 0; i  < b.Length; i++) 
         Console.Write(b[i].ToString( "0000 ")+ "  "); 
     Console.WriteLine();   
     Console.WriteLine(BitConverter.ToString(b, 0)); 
     Console.WriteLine(); 
 }   
 得到的结果: 
 ------------------- 
 UNICODE Encoding: 2 bytes 
 2D-4E 
 0045 0078 
 2D-4E   
 UTF8 Encoding: 3 bytes 
 E4-B8-AD 
 0228 0184 0173 
 E4-B8-AD 
 -----------------   
 以UTF8为例: 
 byte[] stringbyte = BitConverter.GetBytes(Convert.ToInt32( "E4B8AD ", 16)); 
 这里得到的stringbyte长度为4 
 0173 0184 0228 0000 
 且数据倒置了,也就是说用这个stringbyte得不到“中”字 
 Console.WriteLine(Encoding.UTF8.GetString(stringbyte));   
 笨办法: 
 byte[] stringbyte = BitConverter.GetBytes(Convert.ToInt32( "E4B8AD ", 16)); 
 byte[] newstringbyte = new byte[3]; 
 newstringbyte[0] = stringbyte[2]; 
 newstringbyte[1] = stringbyte[1]; 
 newstringbyte[2] = stringbyte[0]; 
 Console.WriteLine(Encoding.UTF8.GetString(newstringbyte)); 
 可以得到正确结果。   
 建议楼主多试几个编码的对应关系,找出其中存在的问题。