php网页抓取乱码( PHP与Mysql的数据交互(一)_PHP网页的编码 )
优采云 发布时间: 2022-03-09 14:26php网页抓取乱码(
PHP与Mysql的数据交互(一)_PHP网页的编码
)
配置phpstudy,访问页面出现中文乱码,解决方法如下。
一、PHP网页的编码
1、 php文件本身的编码要和网页的编码匹配
一种。如果要使用gb2312编码,那么php应该输出header:header("Content-Type: text/html; charset=gb2312"),添加一个静态页面,所有文件的编码格式都是ANSI,可以是用记事本打开并保存为选择编码为ANSI以覆盖源文件。
湾。如果要使用utf-8编码,那么php应该输出header:header("Content-Type: text/html; charset=utf-8"),添加静态页面,所有文件的编码格式都是utf- 8.
保存为 utf-8 可能有点麻烦。一般utf-8文件开头都会有BOM。如果使用session,就会出现问题。你可以使用editplus来保存。在editplus中,tools->parameter selection->file->UTF-8 Signature,选择Always delete,然后save去掉BOM信息。
2、php 本身不是 Unicode
substr等所有函数都必须改成mb_substr(需要安装mbstring扩展),或者使用iconv转码。
二、PHP与Mysql的数据交互
1、PHP和数据库的编码要一致
修改mysql配置文件my.ini或f,mysql最好用utf8编码。
2、在需要做数据库操作的php程序前加上mysql_query("set names 'encoding'")
编码与PHP编码一致。如果 PHP 编码为 gb2312,则 MySQL 编码为 gb2312。如果是utf-8,则MySQL编码为utf8,这样插入或检索数据时不会出现乱码。
三、PHP 依赖于操作系统
Windows 和 Linux 的编码是不同的。在Windows环境下,如果调用PHP函数时参数是utf-8编码的,会出现错误,如move_uploaded_file()、filesize()、readfile()等,这些函数是处理上传的。, 下载时经常使用,调用时可能会出错。
虽然在Linux环境下gb2312编码不会出现这些错误,但是保存后的文件名是乱码,无法读取文件。此时,参数可以转换为操作系统识别的编码。编码转换可以是mb_convert_encoding(string, New encoding, original encoding)或者iconv(original encoding, new encoding, string),这样处理后保存的文件名不会出现乱码,可以正常读取文件,可实现中文名称文件的上传下载。
其实还有更好的方案,完全脱离系统,不需要考虑系统编码什么。您可以生成一个只有字母和数字的序列作为文件名,并将原来的中文名称保存在数据库中,这样调用move_uploaded_file()就不会出现问题。下载的时候把文件名改成原来的中文名即可。实现下载的代码如下:
最后,其实就是修改一个php页面,添加一个输出头。
推荐教程:PHP视频教程
以上就是php网页乱码的详细内容。更多详情请关注php中文网文章其他相关话题!