0

我在本地使用 wamp,它的 mysql 版本是 5.5。完成网站后,我想将其上传到我的网站(共享主机)。运行(5.1),但我不能再插入阿拉伯字母了。

当我在阿拉伯语中插入任何字段时,它会被存储为奇怪的字符“ضووع”。

它在我的电脑上做得很好,但不是在线。

默认情况下,数据库是 myisam,但所有表都是带有 utf8_general_ci 的 innodb。这也是我在我的机器上使用的同一个数据库(默认为 innodb)(我已将它导入到共享主机上的新数据库中)。

到目前为止,我在建立连接后尝试了这些东西

mysql_set_charset('utf8');

mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");
mysql_query("SET COLLATION_CONNECTION = 'utf8_unicode_ci'");

我还能做什么?

4

2 回答 2

2

如果您mysql_set_charset('utf8');在插入数据时正在使用并且没有出现任何错误,则意味着您正确地为数据库提供了 utf-8。另一方面,您可以在其他一些字符集中定义表,例如 Windows-1256('cp1256'由 MySQL 标记),但是从您看到的输出(UTF-8 解码为 Windows-1252)看来这似乎是不可能的。

所以我看到的可能性是您正在从数据库中回显数据,并看到这些字符串。在发送任何输出之前,您需要告诉浏览器数据也是 UTF-8 格式:

<?php
header("Content-Type: text/html; charset=utf-8"); 

如果您已经在这样做或这样做没有帮助,则您的数据可能在导入过程中被错误地转换。

如果是这种情况,并且可以重新导入,请确保在导出数据时以 utf-8 格式输出,并且在导入导出的数据时,将其视为 utf-8。

于 2013-01-30T10:02:15.257 回答
0

这发生在我身上一次,我正在使用htmlentities(),但是当我使用时htmlspecialchars($string, ENT_QUOTES, 'UTF-8');问题解决了。

希望你有同样的问题。

于 2013-01-30T22:17:40.960 回答