AS3发送http请求编码不对的解决方法

本文介绍了一个通过利用ByteArray对象的编码转换和存储功能来解决AS3与百度服务端编码不匹配问题的方法。通过提供一个编码类包,实现了将AS3输出的UTF编码转换为百度等服务端接受的GBK编码,有效解决了乱码问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在ActionScript 3 内部无论出和入都统一使用Unicode,但服务器那边却是千奇百怪的编码,例如Google使用UTF-8,百度似乎是GBK。于是向百度这样的服务端 发出URLRequest请求百分百会出现乱码,无论设置什么Content Type 或者Post Method都如此,因为AS3输出的是UTF,而百度不接受这样的编码。而URLRequest本身也不支持自定义编码,百度服务端用什么编码也不是我 们能控制的,所以烦死人的问题就这样出来了。唯一能让我们控制的只有AS3,所以解决办法还是要从AS3上去考虑。浪费了大量时间去查阅,基本没有人提到 URL编码的问题。最后终于找到解决的思路,就是利用ByteArray对象的编码转换和存储功能,


活用ByteArray类,能处理绝大部分的AS3编码问题。

原理不再多说,一个上午的努力最后转化成这样一个编码的类包:

// ==============================================================

复制代码
function myUrlEncode(str:String,code:String):String
{
    
var stringresult:String = "";
    
var byte:ByteArray =new ByteArray();
    
byte.writeMultiByte(str,code);
    
for (var i:int; i<byte.length; i++)
    {
        stringresult 
+=  escape(String.fromCharCode(byte[i]));
    }
    
return stringresult;
}
复制代码

 

 str是要编码的字符串,code是编码格式

比如


var mystring="小小菜鸟";
mystring
=myUrlEncode(mystring,"GBK");

参考:

http://www.viosem.com/2008/08/as3-utf-8-to-gb-encode/



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值