我在 MySQL 数据库中存储瑞典语字符时遇到问题。我想将它们存储在users
使用排序规则 utf8-bin 调用的表中。即使我使用的是 utf8,字符也会å ä ö
被存储为Ã¥ ä ö
,我不知道为什么。检索数据并回显它给了我相同的输出,用奇怪的字符而不是å ä ö
. 任何帮助表示赞赏。
问问题
7440 次
4 回答
8
称呼
mysql_set_charset("utf8");
在连接之后和进行任何查询之前。
您的数据库字符集仅用于存储,而不是用于应用程序和数据库之间的传输。
于 2013-03-24T23:39:02.870 回答
1
有几个地方,你必须注意编码。
- 数据库:您已经使用了 utf8 排序规则,所以没关系
- 数据库连接:
mysqli_set_charset
如果您使用的是 mysqli,则用于设置连接的字符集。其他数据库驱动程序也有类似的功能。 - 页面的输出编码:您可以使用 HTTP 标头或元标记。如果您想安全起见,请同时指定两者。
于 2013-03-24T14:48:45.597 回答
0
这里有几个参数需要考虑。为了使现在和将来都能正常工作。与文本的所有不同交互都必须采用相同的编码。即使在 db 中(为了让连接正常工作等)。
插入数据的编码(插入时设置在页眉和/或 utf_8 编码中)。
db 表中的编码,(我建议所有人使用 utf8_swedish)
页面查看结果的编码来自 db(在 header 中设置)
正在编辑的页面的编码。它可以以不同的编码打开文档。如果您不熟悉它,这是一个大问题。以正确的编码打开并保存文档。
曾经有一个关于连接编码的问题,设置正确,但今天它比几年前的问题更小,因为发生了变化。
一些笔记。您确定您的数据是这样存储的,或者只是通过例如 phpmyademin 呈现错误?尝试使用 print utf8_encode($text) 打印
或者,utf8_decode() 函数,它可以让您深入了解...
于 2013-12-22T02:01:47.557 回答
0
您应该确保数据库连接使用瑞典编码并且页面输出的编码也是正确的。不同的编码会导致许多这样的问题。在此处阅读有关字符编码的更多信息。
于 2013-03-24T14:08:11.337 回答