php网页抓取乱码( PHP与Mysql的数据交互(一)_PHP网页的编码)
优采云 发布时间: 2021-12-05 01:07php网页抓取乱码(
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->Preferences->File->UTF-8 Sign,选择始终删除,然后保存删除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 code, original code)或者iconv(original code, new code, string),这样处理后保存的文件名就不会出现乱码,也可以正常读取文件实现中文名称文件的上传和下载。
其实还有更好的方案,完全脱离系统,不需要考虑系统的编码。可以生成一个只有字母和数字的序列作为文件名,并将原来的中文名保存在数据库中,这样调用move_uploaded_file()就不会出现问题。下载时只需要将文件名改成原来的中文名即可。实现下载的代码如下:
最后,实际修改一个php页面并添加一个输出头。
推荐教程:PHP视频教程
以上就是php网页上乱码的详细内容。更多详情请关注其他相关php中文网站文章!
免责声明:本文原创发表于php中文网。转载请注明出处。感谢您的尊重!如果您有任何疑问,请与我们联系