我使用 PHP + HTML + smarty (作为模板)。
有一些来自用户输入的动态内容。
当用户输入一些特殊字符时,例如
—.‘@•
,它已正确保存在变量中。
但是当我尝试在
textbox
(使用smarty模板)中显示特殊字符的相同内容时,它会显示如下内容:�.�@�
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> is already included in the
标题`.
我已经提到过这个:utf-8特殊字符不显示
它的解决方案都不适合我。
确保所有处理字符串的内容都支持 UTF-8。主要:
如果在显示字符串之前将字符串存储在表中,请检查它是否是 UTF-8 编码的(例如,对于 MySQL,在创建表时有
DEFAULT CHARSET=utf8
)。确保视图文件保存为UTF-8。在文本编辑器中,您通常可以选择编码。或者选择“另存为...”并选择编码。
我不熟悉 Smarty,但请确保它没有将字符串转换为某种非 UTF8 编码。
在 $dbconn 之后添加这两行:
$dbconn = mysqli_connect($hostname,$user,$pass,$database) 或 die("没有数据库连接!");
mysqli_query($dbconn, "设置会话字符_SET_RESULTS =latin1;"); mysqli_query($dbconn, "设置会话 CHARACTER_SET_CLIENT =latin1;");
这将从 MySQL 中按原样提取数据,不对其进行编码。
祝你好运! 中号