[IOS学习]使用URLRequest方法向服务器端发送数据无法保存中文的问题(3 位领导批示)
- 2011-12-21
- 分类:IOS
- 作者:银子
- 269 位领导视察
之前的一篇文章:使用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对字符串进行编码时,用于存储数组所需要的字节数。 |















