scs653298 发表于 2018-12-24 08:53:31

php中的编码转换

  string iconv ( string in_charset, string out_charset, string str )
  注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。
  iconv("UTF-8","GB2312//IGNORE",$data)
  发现iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 mb_convert_encoding没有这个bug.
  

  
一般情况下用 iconv,只有当遇到无法确定原编码是何种编码,或者iconv转化后无法正常显示时才用mb_convert_encoding 函数.
  string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )
  mb_convert_encoding("你是我的友仔", "UTF-8", "GB2312,UTF-8");
  1、把 GBK 编码字串转换成 UTF-8 编码字串
  


[*]
  

  2、把 UTF-8 编码字串转换成 GB2312 编码字串
  


[*]// 注意将此文件存盘成   utf-8 编码格式文件再测试
[*]
  

  3、对整个页面进行转换
  
该方法适用所有编码环境。这样把前128个字符以外(显示字符)的字符集都用   NCR(Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码环境下页面都能正 常显示。
  在php文件的头部加上下面三行代码:
  


[*]mb_internal_encoding("gb2312");// 这里的gb2312是你网站原来的编码
[*]mb_http_output("HTML-ENTITIES");
[*]ob_start('mb_output_handler');
  

  使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string)扩展。
  如果没有没有开启php的mbstring扩展,则需要做如下设置,让php支持该扩展。
  1、windows 服务器环境
  编辑 php.ini 文件,将; extension=php_mbstring.dll 前面的 ; 去掉,重启网页服务器。
  2、Linux服务器环境
  在编译配置时加入 --enable-mbstring=cn 编译参数,再进行PHP的编译安装。


页: [1]
查看完整版本: php中的编码转换