[转]utf8 与 utf-8的区别就是一个汉字占 2字节 与 3字节的区别

[url]http://bbs.9ria.com/viewthread.php?tid=72036&extra=page%3D1%26amp;orderby%3Ddateline%26amp;filter%3D172800[/url]


今天在用bytearray时偶然发现一个问题:"一个汉字占3个字节"。而我清晰的记得原来在学java时说的是一个汉字占俩个字节。直到发现这个问题前我都是这么“以为”的。
我简单的写下代码:


var defaultEncoding:String = "utf-8";
var headStr:String = "头信息";
var ba:ByteArray = new ByteArray();
ba.writeMultiByte(headStr, defaultEncoding);
trace("headDatalength:", ba.length);
trace(getHeadData(ba));



getHeadData(ba)这个方法是我把read方法封装了,这里就先不解释了。
看看打印的结果:
headDatalength: 9
头信息
明明3个字,却占了9个字节。于是我Baidu,google下,发现了一篇文章《AS3 Socket 汉字乱码深入研究》(http://happear.iteye.com/blog/714928
我觉得这篇文章很好,所以就把链接也发上来了,一起学习学习)。
他的例子用的编码是:“utf8”;(他是这么写的!!!)
我就试着把var defaultEncoding:String = "utf-8";(我习惯这么写)
该写成了 var defaultEncoding:String = "utf8"; 只有一个“-”的区别。
区别不大可影响力不小。
看看这次打印的结果:
headDatalength: 6
头信息
现在我在回想原来写代码为什么老有乱码的问题,很有可能在这里出过问题(当然其他可能出现的问题你能从网上搜到,解决办法有的是,我只是希望没有注意过这里的童鞋们,能留意下)。真可以说是一个“-”引发的血案。
所以我就觉得,如果你想用UTF编码的话 最好用byteArray的 writeUTF 或者 writeUTFBytes方法。省的因为习惯问题在合作开发中产生不必要的麻烦。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值