首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

是Framwork2.0的BUG还是 只是编码不同的有关问题,关于Encoding.Unicode.GetString的有关问题

2012-01-02 
是Framwork2.0的BUG还是 只是编码不同的问题,关于Encoding.Unicode.GetString的问题byte[]buffernewbyte[

是Framwork2.0的BUG还是 只是编码不同的问题,关于Encoding.Unicode.GetString的问题
byte[]   buffer   =   new   byte[]   {   221,   234,   146,   216,   150,   191   };
string   test   =   System.Text.Encoding.Unicode.GetString(buffer);
byte[]   buffer1   =   System.Text.Encoding.Unicode.GetBytes(test);
以上代码在.NET   2003中执行返回值正常,buffer跟buffer1的长度都为6
但是我今天转到.NET   2005时,发现Encoding.Unicode转换String跟byte时
会发生值丢失的情况,所以写以上代码测试,发现buffer的长度是6,但buffer1
的长度却是4,丢失了146跟216这两个值,这是什么问题啊,搞死我了,望赐教.


[解决办法]
没碰到过,测试先
[解决办法]
不是bug,你全部改為21看看
[解决办法]
然後你全部改為221看看,維數變為多少?非可視字符在Unicode編碼裡被處理了。
[解决办法]
用ASCII轉換吧:
byte[] buffer = new byte[] { 221, 234, 146, 216, 150, 191 };
string test = System.Text.Encoding.ASCII.GetString(buffer);
byte[] buffer1 = System.Text.Encoding.ASCII.GetBytes(test);
[解决办法]
换个编码试下
[解决办法]
我狂晕,不是任意字节都能转为字符编码再转回来的

你如果要实现任意字节转为字符串再转回,可以用Base64编码或转为16进制
[解决办法]
遇到不可见字符就自动断了
[解决办法]
//Base64编码
Convert.ToBase64String
Convert.FromBase64String

热点排行