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

Header函数前有输出的重定向问题(0 位领导批示)

一般做PHP页面重定向时,会用到header函数的location属性,然而在header函数前面有输出时就会报错

比如

<?PHP   
echo   "hello";   
header("Location:http://www.********.com");   
?>

解决的方法就是在这段代码前加上一个函数 ob_start();
代码如下:

<?PHP
ob_start();
echo   "hello";   
header("Location:http://www.********.com");   
?>

引用一下资料:

自PHP4起,可以通过一些输出缓冲函数来解决这个问题。代价是把所有向浏览器的输出都缓存在服务器,直到下命令发送它们。可以在代码中使用 ob_start() 及 ob_end_flush() 来实现这样的功能,或者通过修改php.ini中的output_buffering配置选项来实现,也可以通过修改服务器配置文件来实现。

随机显示的10篇日志

评论最多的10篇日志

浏览最多的10篇日志