【发布时间】:2014-08-25 03:21:21
【问题描述】:
好的,这很奇怪,我真的不知道是什么导致了我的问题:
工作流程:
- 我有一个带有 utf-8 列的常规 mysql 数据库。
- 我正在通过一个简单的输入字段将带有德语变音符号的文本插入到此列中。
- 我正在使用简单查询读取和显示行。
我的问题:
有时且仅有时会显示变音符号而不是问号。 奇怪的是,它只有某些词,而不是所有的变音符号。 例如:“Gummibären”导致“ä”出现问号,但“Gumibären”(注意单个“m”)显示正确。所以,我真的想不出这里的模式。
- 列在
utf8_general_ci - HTML 文件使用
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> - PHP 文件本身以 utf-8 编码
查询是:
mysqli_query("SET NAMES 'utf8'");
$var = "SELECT * FROM table ORDER BY id DESC";
同样奇怪的是,“ä”不是被1个问号而是2个问号代替,好像有2个字符没有编码而不是1个。
我有什么遗漏吗?
【问题讨论】:
-
警告 - mysql_query 此扩展自 PHP 5.5.0 起已弃用,将来将被删除。相反,应该使用 MySQLi 或 PDO_MySQL 扩展。
-
从上面链接的 QA 中,“如果数据是从数据库中获取的,您可以使用 mb_detect_encoding() 来验证其编码。”
-
谢谢,我读了这篇文章并做了一些研究。不幸的是,它对我的问题没有多大帮助。奇怪的是,某个变音符号的每隔一次出现都会正确显示,而不是显示为�。如果我设置 mysqli_set_charset($con,"utf8");它显示 2 �� 如果不是,它显示单个��。
-
mb_detect_encoding 显示 ASCII
标签: php mysql sql encoding utf-8