我被一个问题难住了。似乎我尝试过的大多数技巧根本不起作用。问题概述如下:
创建表,排序规则设置为 utf8_unicode_ci。列也一样。
表单所在页面的字符编码为 UTF-8(在
<meta>
标签中)。表单设置为接受 UTF-8 (<form action="execute.php" method="POST" accept-charset="utf-8">
)字符集Execute.php 使用
htmlspecialchars(@trim($str), ENT_QUOTES, "UTF-8");
并运行mysql_real_escape_string($str);
. 声明数据库连接应以 UTF-8 (mysql_set_charset('utf-8');
) 编码。将值插入数据库。如果我停止数据库插入并回显查询,我会得到正常的输出。现在乐趣开始了。MySQL 行显示奇数字符,例如 ß 变成 ß。
如果我检索数据库数据并将其呈现在使用 UTF-8 编码的页面上,则字符看起来也很混乱(ß)。但是,当我将页面编码更改为西方 ISO 时,字符显示就好了 - ß。
我怀疑表单将数据提交到数据库时出现问题......但我无法确定到底哪里出了问题。