ASIHttpRequest中Post中文乱码解决

项目中需要与java做的网站进行连接,需要向网站post中文字符,而且采用的是GB2312编码。在使用ASIHttpRequest中ASIFormDataRequest的AddPost函数进行数据传输时老是报乱码。经过多种努力,得到最终解决方法。

首先,可以通过修改ASIFromDataRequest中

- (id)initWithURL:(NSURL *)newURL

{

self = [super initWithURL:newURL];

[self setPostFormat:ASIURLEncodedPostFormat];

[self setStringEncoding:NSUTF8StringEncoding];

        [self setRequestMethod:@"POST"];

return self;

}

把NSUTF8StringEncoding修改为

NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000); 
这是GB2312编码。
然后在post时,也把要post的数据通过
 NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);    
NSString *str = @"汉字";

 NSData *data = [str dataUsingEncoding:enc];

NSString *retStr = [[NSString alloc] initWithData:data encoding:enc];

进行GB2312转码,然后发送就可以了。

但参考过http://dev.ppios.com/2012/09/%25E4%25BD%25BF%25E7%2594%25A8-asihttprequest-%25E6%25A8%25A1%25E6%258B%259F%25E7%2599%25BB%25E9%2599%2586%25E6%25AD%25A3%25E6%2596%25B9%25E6%2595%2599%25E5%258A%25A1%25E7%25B3%25BB%25E7%25BB%259F%25E7%259A%2584%25E5%2587%25A0%25E7%2582%25B9%25E5%25BF%2583%25E5%25BE%2597/

感觉自己的方法太笨了。其实ASIHttpRequest中已经提供这样的函数了。

即:

[request setStringEncoding:enc];

只要调用这个函数,直接就可以发送中文汉字,不需要在做其他的事情。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值