php用正则表达抓取网页中文章(php的header来定义php页面为utf编码或GBK编码)

优采云 发布时间: 2021-12-18 15:05

  php用正则表达抓取网页中文章(php的header来定义php页面为utf编码或GBK编码)

  php header 定义一个php页面为utf编码或GBK编码

  php页面是utf编码

  header("Content-type: text/html; charset=utf-8");

  php页面是gbk编码

  header("Content-type: text/html; charset=gb2312");

  php 页面是 big5 编码

  header("Content-type: text/html; charset=big5");

  通常上面的代码放在php页面的首页

  使用header或者meta实现PHP页面编码的差异

  一、页面编码

  1. 使用标签设置页面编码

  这个标签的作用是声明客户端浏览器使用什么字符集编码来显示页面,xxx可以是GB2312、GBK、UTF-8(与MySQL不同,MySQL是UTF8)等)。因此,大多数页面都可以通过这种方式告诉浏览器在显示这个页面时使用什么编码,这样就不会造成编码错误,产生乱码。但是有时候我们会发现这句话还是不行,不管是哪种xxx,浏览器总是使用一种编码,这个后面会讲到。

  请注意,它属于html信息,它只是一个声明,它的作用是表明服务器已将HTML信息传输给浏览器。

  2. header("content-type:text/html; charset=xxx");

  这个函数 header() 的目的是将括号中的信息发送到 http 头。

  如果括号内的内容如文中所述,则功能与标签基本相同。你可以比较第一个,发现字符都一样。但不同的是,如果有这个功能,浏览器会一直使用你需要的xxx编码,绝不会不听话,所以这个功能很有用。为什么会这样?那么我们就不得不说一下HTTPS header和HTML信息的区别:

  https头是服务器在使用HTTP协议向浏览器发送HTML信息之前发送的字符串。

  因为meta标签属于html信息,header()发送的内容最先到达浏览器。通俗点就是header()的优先级比meta高(不知道能不能这么说)。添加一个 php 页面有一个标题(“content-type: text/html; charset=xxx”)和一个标题(“content-type: text/html; charset=xxx”)。浏览器只识别以前的 http 标头,而不识别元。当然,这个功能只能在php页面中使用。

  还有一个问题。为什么前者绝对有效,而后者有时会失败?这就是接下来要讨论 Apache 的原因。

  3. 添加默认字符集

  在Apache根目录的conf文件夹中,有完整的Apache配置文件httpd.conf。

  用文本编辑器打开httpd.conf,第708行(不同版本可能不一样)有AddDefaultCharset xxx,其中xxx为代号。这行代码的含义:将整个服务器中网页文件https头部的字符集设置为你默认的xxx字符集。有了这行,就相当于给每个文件加了一行header("content-type:text/html; charset=xxx")。现在你可以理解为什么meta设置是utf-8了,但是浏览器总是使用gb2312。

  如果网页中有header("content-type:text/html; charset=xxx"),请将默认字符集更改为您设置的字符集,因此此功能将始终有用。如果在AddDefaultCharset xxx前面加一个“#”,把这句话注释掉,页面中没有header(“content-type...”),那么就轮到meta标签起作用了。

  总结:

  快来订购

  标题(“内容类型:文本/ html;字符集= xxx”)

  添加默认字符集 xxx

  如果您是网络程序员,请为您的每个页面添加一个 header("content-type:text/html; charset=xxx"),以确保它可以在任何服务器上正确显示并且具有高度的可移植性。

  至于AddDefaultCharset xxx这句话,就看你评论了。反正我注释掉了,但是写页面的时候还需要写header(),这样才能在服务器上正常显示。

  二、数据库编码

  PHP程序查询数据库前,先执行mysql_query("SET NAMES xxxx"); 其中xxxx是你网页的编码(charset=xxxx),如果网页charset=utf8,那么xxxx=utf8,如果网页charset=gb2312,那么xxxx=gb2312,几乎所有的WEB程序都有一个通用的连接代码数据库,它放在一个文件中。在此文件中,添加 mysql_query("set names")。

  SET NAMES 显示客户端发送的 SQL 语句中使用的字符集。因此,SET NAMES'utf-8'语句告诉服务器“以后从这个客户端发送的信息将使用字符集utf-8”。它还指定服务器发送回客户端的结果的字符集。(例如,如果您使用 SELECT 语句,它会指示列值使用的字符集。)

  统一的 PHP 页面编码

  MySQL 数据库编码、html 页面编码以及PHP 或html 文件本身的编码都必须保持一致。

  1、MySQL 数据库代码:指定创建数据库时的代码(如gbk_chinese_ci)。创建数据表、创建字段或插入数据时不要指定代码。数据库代码将被自动继承。

  连接数据库时,还有一段代码,连接数据库后可以执行

  mysql_query('SET NAMES gbk');//用你的编码替换gbk,比如utf8。

  2、html页面的编码参考这一行的设置:

  3、 PHP或html文件本身的编码:用editplus打开php文件或html文件,另存为时选择编码。如果数据库和页面编码是gbk,那么这里的编码是ansi;如果数据库和页面编码都是utf-8,这里也选择utf-8。

  4、 还有一点需要注意的是Javascript或者Flash中传递的数据是utf-8编码的。如果数据库和页面编码为gbk,则必须进行转码,然后写入数据库。

  iconv('utf-8','gbk', $content);

  5、在PHP程序中,可以添加一行来指定PHP源程序的编码:

  header('Content-type: text/html; charset=gbk');

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线