特殊字符未在文本框中正确显示

问题描述 投票:0回答:2

我使用 PHP + HTML + smarty (作为模板)。

有一些来自用户输入的动态内容。

当用户输入一些特殊字符时,例如

—.‘@•
,它已正确保存在变量中。

但是当我尝试在

textbox
(使用smarty模板)中显示特殊字符的相同内容时,它会显示如下内容:
�.�@�

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8"> is already included in the
标题`.

我已经提到过这个:utf-8特殊字符不显示

它的解决方案都不适合我。

php html sql utf-8 smarty
2个回答
0
投票

确保所有处理字符串的内容都支持 UTF-8。主要:

  • 如果在显示字符串之前将字符串存储在表中,请检查它是否是 UTF-8 编码的(例如,对于 MySQL,在创建表时有

    DEFAULT CHARSET=utf8
    )。

  • 确保视图文件保存为UTF-8。在文本编辑器中,您通常可以选择编码。或者选择“另存为...”并选择编码。

  • 我不熟悉 Smarty,但请确保它没有将字符串转换为某种非 UTF8 编码。


0
投票

在 $dbconn 之后添加这两行:

$dbconn = mysqli_connect($hostname,$user,$pass,$database) 或 die("没有数据库连接!");

mysqli_query($dbconn, "设置会话字符_SET_RESULTS =latin1;"); mysqli_query($dbconn, "设置会话 CHARACTER_SET_CLIENT =latin1;");

这将从 MySQL 中按原样提取数据,不对其进行编码。

祝你好运! 中号

© www.soinside.com 2019 - 2024. All rights reserved.