您当前的位置: 首页 > 网站编程 > PHP教程 > PHP中字符串替换时导致的乱码

PHP中字符串替换时导致的乱码

作者:不详 来源:网络 发布时间: 2011-09-03 21:51 点击:
文件chinese.php本身是utf8编码。 chinese.php ?php define('l',br/\n); $f=$_REQUEST['f']; function_exists($f)||die(Function$f not exists); $f(); //======================================== function test1(){ header(Content-type:text/html;charset=gbk); $f

PHP中字符串替换时导致的乱码

  文件chinese.php本身是utf8编码。
  
  chinese.php
  
  <?php
  
  define('l',"<br/>\n");
  
  $f=$_REQUEST['f'];
  
  function_exists($f)||die("Function$f not exists");
  
  $f();
  
  //========================================
  
  function test1(){
  
  header("Content-type:text/html;charset=gbk");
  
  $finalStr='中国,3';
  
  $finalStr=iconv('UTF-8','GBK',$finalStr);
  
  echo$finalStr.l;
  
  $finalStr=str_replace(',',',',$finalStr);
  
  echo$finalStr.l;
  
  }
  
  //========================================
  
  //========================================
  
  function test2(){
  
  header("Content-type:text/html;charset=utf-8");
  
  $finalStr='中国,3';
  
  echo$finalStr.l;
  
  $finalStr=str_replace(',',',',$finalStr);
  
  echo$finalStr.l;
  
  }
  
  //========================================
  
  //========================================
  
  function test3(){
  
  header("Content-type:text/html;charset=utf-8");
  
  $finalStr='chinese,3';
  
  $finalStr=iconv('UTF-8','GBK',$finalStr);
  
  echo$finalStr.l;
  
  $finalStr=str_replace(',',',',$finalStr);
  
  echo$finalStr.l;
  
  }
  
  //========================================
  
  ?>
  
  1.测试一
  
  http://localhost/research/chinese.php?f=test1
  
  中国,3
  
  中国锛?
  
  2.测试二
  
  http://localhost/research/chinese.php?f=test2
  
  中国,3
  
  中国,3
  
  3.测试三
  
  http://localhost/research/chinese.php?f=test3
  
  chinese,3
  
  chinese,3
  
  4.总结
  
  根据以上的测试,可以得出如下的结论:
  
  function test1:
  
  由于刚开始"中国,3"是utf8编码,且里面的内容含有中文,后面通过iconv转换成了gbk编码,而str_replace(',',',',$finalStr);中,是全角逗号,可以理解为中文,而且是utf8编码的中文,由于”中国,3“已经转换成了gbk编码,全角逗号是utf8编辑,因此替换的时候出现了乱码。
  
  function test2:
  
  “中国,3”与“,”均是utf8编码,因此进行str_replace操作后没有导致乱码。
  
  function test3:
  
  “chinese,3”是数字、字母及,(逗号),不管转换成什么编码还是原来的内容,尽管str_replace(',',',',$finalStr);中是全角逗号,可以理解为中文,但是由于”chinese,3“中没有中文,所以替换后没有导致乱码,只能这样理解了。

分享到:
本文"PHP中字符串替换时导致的乱码"由远航站长收集整理而来,仅供大家学习与参考使用。更多网站制作教程尽在远航站长站。
顶一下
(0)
0%
踩一下
(0)
0%
[点击 次] [返回上一页] [打印]
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 密码: 验证码:
关于本站 - 联系我们 - 网站声明 - 友情连接- 网站地图 - 站点地图 - 返回顶部
Copyright © 2007-2013 www.yhzhan.com(远航站长). All Rights Reserved .
远航站长:为中小站长提供最佳的学习与交流平台,提供网页制作与网站编程等各类网站制作教程.
官方QQ:445490277 网站群:26680406 网站备案号:豫ICP备07500620号-4