数据库字符集也设置了utf8或者gbk。但还是乱码,
我在1年前使用虚拟机的时候就出现了这种的乱码样式,如今是真实服务器了,却又出现乱码。 这是怎么回事?谁遇到过?
回复讨论(解决方案)
但是从数据库中进行查询, 还是正常的
你的数据入库时没有设置工作语言(set names xxx)
所以在出库时,也不要设置工作语言
如果想深究,请贴出查询结果的 base64 编码
这是set names utf8查询出的结果,确实和我乱码的一模一样
这是我set names gbk 查询出的结果。也是乱码
@xuzuning 那么请问 您说的base64 编码是怎么个意思 不太明白
不用 set names xxx 时输出是什么样的?
你用程序查询后,比如有中文内容的字段 name 的内容在 $name 中
就 echo base64_encode($name); 贴出结果
@xuzuning
这是我当前的字符集。不用set names xxx 在mysql里查询的时候,数据一切正常,但是如果设置为gbk或者utf8那就乱码了。
我把我项目的数据库配置文件改为了拉丁 ,现在页面已经显示正常了。
问题虽然解决了,但是我不明白啊 为什么数据库这里的默认字符集是拉丁的,我一旦修改为utf8 或者gbk就会乱码。
这个问题您知道怎么造成的吗?
latin1 是单字节字符集,可保存码值为 0~255 的字符
gbk、utf8 是多字节字符集,只能保存符合编码规则的数据
latin1 可以按字节容纳 多字节字符集,但不能与多字节字符集做编码转换
这就是你乱码的原因
latin1 是单字节字符集,可保存码值为 0~255 的字符
gbk、utf8 是多字节字符集,只能保存符合编码规则的数据
latin1 可以按字节容纳 多字节字符集,但不能与多字节字符集做编码转换
这就是你乱码的原因
那出现latin1作为mysql的默认字符集的原因是什么?
我该如何使用utf8作为字符集 并且正常输出呢?
多谢大侠
show create table 表名
贴出来看看
修改mysql的my.ini文件中的字符集键值
如 default-character-set = utf8
character_set_server = utf8
修改完后,重启mysql的服务