background image

PHP

笔记 php 设置编码格式的方法

最近需要用到 iconv 函数把抓取来过的 utf-8 编码的页面转成 gb2312  

, 发现只有用

iconv 函数把抓取过来的数据一转码数据就会无缘无故的少一些。
  a.   如 果 欲 使 用 gb2312 编 码 , 那 么 php 要 输 出 头 : header(“Content-Type: 
text/html; charset=gb2312"),静态页面添加<meta http-equiv="Content-Type" 
content="text/html; charset=gb2312">,所有文件的编码格式为 ANSI,可用记事
本打开,另存为选择编码为 ANSI,覆盖源文件。
    b.   如 果 欲 使 用 utf-8 编 码 , 那 么 php

 

要 输 出 头 : header(“Content-Type: 

text/html; charset=utf-8") , 静 态 页 面 添 加 <meta http-equiv="Content-Type" 
content="text/html; charset=utf-8">,所有文件的编码格式为 utf-8。
  最近需要用到 iconv 函数把抓取来过的 utf-8 编码的页面转成 gb2312  

, 发现只有

用 iconv

 

函数把抓取过来的数据一转码数据就会无缘无故的少一些。 让我郁闷了好一会

儿,去网上一查资料才知道这是 iconv 函数的一个 bug。iconv 在转换字符"—"到
gb2312

 

 

时会出错。解决方法很简单,就是在 需要转成的编码后加 "//IGNORE" 也就是

iconv 函数第二个参数后,如下:
iconv("UTF-8","GB2312//IGNORE",$data)
ignore 的意思是忽略转换时的错误,如果没有 ignore 参数,所有该字符后面的字符串
都无法被保存。