加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

iconv函数提示错误,解决办法整理

(2012-05-17 10:52:14)
标签:

杂谈

分类: php

  在网上看到json的文章,打算测试一下,结果,出现错误,先附上代码:

 

  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. ?>  

  错误信息如下:

 

[xhtml] view plaincopy
  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 Notice: iconv() [function.iconv]: Detected an illegal character in input string in D:/wamp/www/ajax/js_php.php on line Notice: iconv() [function.iconv]: Detected an illegal character in input string in D:/wamp/www/ajax/js_php.php on line {"name":"/u7490/u70ac","age":19,"sex":"","add":"/u6d93"}   

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

 

[xhtml] view plaincopy
  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  
  3. Notice: iconv() [function.iconv]: Detected an incomplete multibyte character in input string in D:/wamp/www/ajax/js_php.php on line  
  4. Notice: iconv() [function.iconv]: Detected an illegal character in input string in D:/wamp/www/ajax/js_php.php on line  
  5. {"name":"/u7490/u70ac/u6e5e/u9498","age":19,"sex":"/u9422","add":"/u6d93"}  

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

 

[xhtml] view plaincopy
  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  
  3. Notice: iconv() [function.iconv]: Detected an incomplete multibyte character in input string in D:/wamp/www/ajax/js_php.php on line  
  4. {"name":"/u7490/u70ac/u6e5e/u9498","age":19,"sex":"/u9422","add":"/u6d93/u9365/u754c/u7176/u7039/u8dfa/u7c1e"}  

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

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

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

  论坛还有个朋友,给我推荐了个函数

  string mb_convert_encoding ( string $str , string $to_encoding [, mixed $from_encoding ] )

  需要编译时加一个参数--enable-mbstring

  对了,附上json转换php数组跟js数组的文章地址也加上,个人感觉文章不错

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有