微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

PHP错误:iconv() Detected an illegal character

 

  1. <?PHP  
  2. @header("Content-type:text/html;charset=GB2312");  
  3. $arr = array ('name'=>"贾朝藤",'age'=>19,'sex'=>"男",'add'=>"中国石家庄");  
  4. echo json_encode($arr);  
  5. echo "<br/>";  
  6. $name = iconv("GBK","UTF-8","贾朝藤");  
  7. $sex = iconv("GBK","UTF-8","男");  
  8. $add = iconv("GBK","UTF-8","中国石家庄");  
  9. $arr = array ('name'=>"$name",'age'=>19,'sex'=>"$sex",'add'=>"$add");  
  10. echo $str=json_encode($arr);  
  11. ?>  

  错误信息如下:

  1. {"name":"/u8d3e/u671d/u85e4","age":19,"sex":"/u7537","add":"/u4e2d/u56fd/u77f3/u5bb6/u5e84"} Notice: iconv() [function.iconv]: Detected an illegal character in input string in D:/wamp/www/ajax/js_PHP.PHP on line 6 Notice: iconv() [function.iconv]: Detected an illegal character in input string in D:/wamp/www/ajax/js_PHP.PHP on line 7 Notice: iconv() [function.iconv]: Detected an illegal character in input string in D:/wamp/www/ajax/js_PHP.PHP on line 8 {"name":"/u7490/u70ac","age":19,"sex":"","add":"/u6d93"}   

  之后百度,谷歌了一番,得到两个方法
  1.把gb2312换为gbk ,同样出错,错误信息如下

  1. "name":"/u8d3e/u671d/u85e4","age":19,"sex":"/u7537","add":"/u4e2d/u56fd/u77f3/u5bb6/u5e84"}  
  2. Notice: iconv() [function.iconv]: Detected an incomplete multibyte character in input string in D:/wamp/www/ajax/js_PHP.PHP on line 6  
  3. Notice: iconv() [function.iconv]: Detected an incomplete multibyte character in input string in D:/wamp/www/ajax/js_PHP.PHP on line 7  
  4. Notice: iconv() [function.iconv]: Detected an illegal character in input string in D:/wamp/www/ajax/js_PHP.PHP on line 8  
  5. {"name":"/u7490/u70ac/u6e5e/u9498","age":19,"sex":"/u9422","add":"/u6d93"}  

  2.在UTF-8后加//IGnorE ,加上提示如下:

  1. {"name":"/u8d3e/u671d/u85e4","age":19,"sex":"/u7537","add":"/u4e2d/u56fd/u77f3/u5bb6/u5e84"}  
  2. Notice: iconv() [function.iconv]: Detected an incomplete multibyte character in input string in D:/wamp/www/ajax/js_PHP.PHP on line 6  
  3. Notice: iconv() [function.iconv]: Detected an incomplete multibyte character in input string in D:/wamp/www/ajax/js_PHP.PHP on line 7  
  4. {"name":"/u7490/u70ac/u6e5e/u9498","age":19,"sex":"/u9422","add":"/u6d93/u9365/u754c/u7176/u7039/u8dfa/u7c1e"}  

  不解,之后在论坛提问,得到问题所在:

  我的PHP文件本身是utf-8编码的,把它转为ansi这个问题就不存在

  修改之后,确实,显示正常了!

或者

return iconv('utf-8//ignore','gbk//ignore',$utfstr); 

替换为

mb_convert_encoding($utfstr, "UTF-8", "GBK");

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐