PHP不乱码,数据库后台乱码 本帖最后由 susoft2008 于 2013-07-22 18:05:28 编辑 PHP增加、修改、查询都不乱码,如图1, MySQL数据库后端显示乱码,如图2, 什么原因呢? 图1: 图2: 数据库乱码 数据库 PHP 乱码 分享到: ------解决方案--------------------你的数据库字段的连接校对是默认的 latin1 的 你存入的数据是 utf-8 的 你没有对 mysql 声明需要的字符集,所以 mysql 依然 latin1 取出数据。对于你来说就是 utf-8 了 但是 mysql 管理工具是要声明所需字符集的,于是被当做 latin1 的 utf8 转换成 utf8 时就出现了乱码现象------解决方案--------------------这就对了,如果是 latin1 的应该是插不进去 utf-8 数据的。刚才我回复时还在想,你是怎么把数据插进去的 但是这并不影响我给出的解释,只是环节有所提前而已 mysql 默认的字符集是 latin1,一般也很少有人在安装 mysql 时改变默认字符集(多数人都不知道在哪里修改)的 所以只要使用了非默认字符集操作 mysql 都必须在操作前执行 set names 字符集代码 对于 utf-8 就是 set names utf8 把以下代码用 utf-8 编码保存,然后运行一下 header('Content-type: text/html;charset=utf-8'); echo iconv('latin1', 'utf-8', '供应商-西施'); 登录后复制或把以下代码用 gbk 编码保存,然后运行一下 header('Content-type: text/html;charset=utf-8'); echo iconv('latin1', 'utf-8', iconv('gbk', 'utf-8', '供应商-西施')); 登录后复制你都会看到这样的结果 ------解决方案--------------------保证3点一致就不会乱码了: 1、数据库和数据表编码 2、页面内部编码 3、文件的编码------解决方案--------------------关键是 character_set_server 的值------解决方案--------------------出了乱码就去找编码吧------解决方案--------------------我要你像这样的结果 echo base64_encode($t);//w6fCscK7w6fCm8Kuw6XCm8Kb $t 是按 BINARY(二进制)方式读出的乱码字段的内容 按图形对比(#7 的方法)你那个仍然是被当做 latin1 处理的 utf-8 这些数据是你在修改字符集之前插入的吧?