我一直用php + mysql(phpmyadmin)来构建中文内容(utf-8)的网站很长一段时间。
当输入表格,并从db生成输出php时,中文单词显示良好;但是当我查看数据库时,虽然有时它们是普通的汉字,但它们不是(变成奇怪的字符串),这让我注意到,mysql处理和输入数据的方式并不总是utf-8。
网上的一些专家提到,mysql用于通过latin1记录输入数据;尽管如此,我注意到phpmyadmin中现有的字符集是utf-8 ......
有没有可靠的方法来检测phpmyadmin表格单元格中出现的中文字符的编码格式?
另外,除了在页面标题处提及之外,是否有任何方法可以确保输入到数据库的数据是utf-8而不是其他数据?
谢谢。
答案 0 :(得分:5)
人们在这方面遇到的最大问题是,他们没有告诉MySQL他们在连接到数据库时发送/期望UTF-8编码数据,因此MySQL认为它应该处理latin1编码数据并转换因此。连接到数据库后使用SET NAMES utf8
发出命令{{1}}。
答案 1 :(得分:0)
在我的情况下,只是因为htmlentities();
解决方案已更改为echo htmlentities($email_db);
到echo htmlentities($email_db, ENT_COMPAT, 'UTF-8');