十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
你的php代码还有请求头的编码和响应头的编码也都要统一成utf8,只控制数据库的编码不行的
成都做网站、成都网站设计的关注点不是能为您做些什么网站,而是怎么做网站,有没有做好网站,给成都创新互联公司一个展示的机会来证明自己,这并不会花费您太多时间,或许会给您带来新的灵感和惊喜。面向用户友好,注重用户体验,一切以用户为中心。
在你的源文件找到meta http-equiv="content-type" content="text/html;charset=utf-8"charset= 后面接的就是编码,你全部改了就可以了。如果你改了之后变成乱码的话,那你就只能先建一个utf-8编码的网页,把相应的内容重新输入进去。
要输出UTF8格式时,加上以下语句:
header(”Content-Type: text/html; charset=UTF-8″)
php用UTF-8总结:
php文件本身必须是UTF-8编码。不像Java会生成class文件,避免这个问题
php要输出头:header(”Content-Type: text/html; charset=UTF-8″)
meta标签无所谓,有header所有浏览器就会按header来解析
所有外围都得用UTF8,包括数据库、×.js、×.css(CSS影响倒不大)
php本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码(基本上的linux都装了,没装的话download、tar、make、make install,很简单的)
my.ini:
[MySQL(和PHP搭配之最佳组合)]
default-character-set=utf8
[MySQL(和PHP搭配之最佳组合)d]
default-character-set=utf8
default-storage-engine=MyISAM
在[MySQL(和PHP搭配之最佳组合)d]下加入:
default-collation=utf8_bin
init_connect='SET NAMES utf8'
在需要做数据库操作的php程序前面加上
mb_internal_encoding('utf-8');
create table最后边加上ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
phpMyAdmin/config.inc.php
$cfg['DefaultCharset'] = 'utf-8';
$cfg['RecodingEngine'] = 'iconv';
phpAdmin导出数据时
把"二进制区域使用十六进制显示"的勾去掉
特别郁闷的:文件系统函数不支持UTF-8!
在 PHP 编写过程中,一般需要注意的是三种编码:
1、网页字符编码
2、文件字符编码
3、数据库字符编码
只有上面3种编码的格式都一致的情况下,才会尽可能的避免乱码的出现。
二、如何使用Notepad++软件设置UTF-8编码:
用 Notepad++ 软件打开指定的 php 文档后,在“格式”菜单下找到“以UTF-8格式编码"
以xxx编码的意思是不强制转换文件的编码,仅仅以某种编码来查看,不会对文件进行修改,这对打开某个文件发现都是乱码时非常实用。
转为xxx编码的意思就是将文件内容强制转换为某种编码,这对于本来看到的就不是乱码但需要调整右下角的文件编码时非常好用。
编码问题是解码者决定的,数据本身并不指明编码方式,而是读数据的解码者选择自己的解码方式
此处,php程序是数据本身,php解释器是解码者本身,
php解释器对 php程序的编码方式 并不应人类对php程序的编码方式理解不同而转移
因此,理论上不存在获取当前数据编码方式的 接口,只要当时的编码者(譬如人类)显示指明编码方式,
解码者(譬如php解释器)方可获知
即使在解析以后再人类看来是一片乱码, PHP认为一切都是正确的.
当然从前端获取来的字符例外
如果不清楚字符串的编码格式的话,就可以将这段字符这样检查:
$encode = mb_detect_encoding($string, array("ASCII",'UTF-8′,"GB2312′,"GBK",'BIG5′));
echo $encode;
这样就能知道它是什么编码的了。后续操作还可以为其转码:
if ($encode == “UTF-8″){
$string = iconv("UTF-8″,"GBK",$string);
}