[IOS学习]使用URLRequest方法向服务器端发送数据无法保存中文的问题(3 位领导批示)

之前的一篇文章:使用URLRequest方法向服务器端发送数据 介绍了如何向服务器端提交数据,但在后来的实践中发现如果发送到服务器端的数据中含有中文就无法保存到数据库中。

我搜索了一下资料,原因很简单,之前的代码中:

1
NSData *requestData = [NSData dataWithBytes:[requestString UTF8String] length:[requestString length]];

dataWithBytes:[requestString UTF8String] 在这里我将发送的数据转为了UTF-8编码

而length:[requestString length]返回的字符串长度不是却是转换之前的.因为字符长度不正确(UTF-8中文字符占三个字节),所以提交过去的数据无法保存在数据库中。

只需要把这行改为:

1
NSData *requestData = [NSData dataWithBytes:[requestString UTF8String] length:[requestString lengthOfBytesUsingEncoding:NSUTF8StringEncoding]];

问题就解决了。

下面是引用:

1
2
3
-(NSUInteger)length  //返回字符串中Unicode字符的个数。
-(NSInteger)maximumLengthOfBytesUsingEncoding: (NSStringEncoding)enc  //返回当用enc对字符串进行编码存储时,所需要的最大字节数。
-(NSInteger)lengthOfBytesUsingEncoding: (NSStringEncoding)enc  //返回当用enc对字符串进行编码时,用于存储数组所需要的字节数。

AJAX中POST或GET传递中文字符乱码的解决办法(备忘)(0 位领导批示)

用AJAX传递中文时..FF会很聪明的自动将中文字符转成十六进制.而BC的IE却非得自己处理..-____!!

最简单的方法就是在需要转义的地方使用JS的内置函数 encodeURIComponent

P.S.最初是用escape做中文转义..注意它与 encodeURIComponent 的区别

Tags : , ,

洋人来了.中文维基解禁(4 位领导批示)

访问中文维基:

http://zh.wikipedia.org/w/index.php?title=%E9%A6%96%E9%A1%B5&variant=zh-cn

但不知道为啥中文维基的LOGO搞成了这个鸟样子..

zh-wiki

随机显示的10篇日志

评论最多的10篇日志

浏览最多的10篇日志