我正在努力使用我网站上的特殊字符编码。我有input
字段,其中已连接datalist
。加载页面时,将从我的数据库中填充datalist
。但不知何故,我在钻石符号中为数据列表选项中的每个特殊字符和特殊语言字符(例如中文)的普通问号获得了这些问号。这是我试过的:
<head>
部分,我还有以下<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
但我仍然得到那些问号。我还能检查什么?
答案 0 :(得分:0)
您可以使用此代码段轻松检查从DB检索的字符串是否有效。 如果它是有效的UTF-8,则问题出在表示层。
if(mb_detect_encoding($str, 'UTF-8', true)){
die('I\'m a valid UTF-8 string, YAY :D ');
}
答案 1 :(得分:0)
我使用phpmyadmin进行数据库管理。服务器连接排序规则设置为utf8mb4_bin。 我存储数据的表格具有排序规则utf8_bin 。当我导入数据时,我确保使用utf8。这些字符也在phpmyadmin中正确显示。
这可能是原因,您希望将其更改为utf8mb4_
整理。
其他要点是使用PHP mb_
等操作,例如
mb_internal_encoding('UTF-8');
mb_http_output('UTF-8');
在PHP页面的顶部。另外,请务必在数据库连接对象中设置 connection 字符集:
$this->MySQLiObjectVariable->set_charset("utf8mb4");
经常发生的是,当MySQL storage 设置正确且PHP输出设置正确时,两者之间的通信被设置为系统默认值,通常不是最佳字符集。给定数据(通常为latin1_
或utf8_
)。
忽略Meta字符集声明并实际使用直接HTML标头设置它们通常也是有益的,例如:
<?php
header('Content-Type: text/html; charset=utf-8');
出现在HTML内容之前的输出页面上,确保浏览器以UTF-8的形式接收数据。