[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对字符串进行编码时,用于存储数组所需要的字节数。

相关文章

分享到新浪微博 推荐到豆瓣 分享到 Google Reader 加入Google书签 嘀咕一下 分享到饭否 分享到做啥 分享到叽歪 分享到鲜果 加入QQ书签 加入百度搜藏 加入雅虎书签 分享到垦一垦

  1. 3
    泥巴巴

    看不懂啊~~[face3]

  2. 2
    天津演出服出租

    对这个真的是不是很懂

  3. 1
    青岛策划

    恩,真的是很难的知识

请领导指示

验证码 (必须)

Additional comments powered by BackType

随机显示的10篇日志

评论最多的10篇日志

浏览最多的10篇日志