我正在使用wamp for localhost,它的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'");
我还能做些什么?
答案 0 :(得分:2)
如果您使用mysql_set_charset('utf8');
并且在插入数据时没有收到任何错误,则表示您正确地为数据库提供了utf-8。另一方面,您可以在其他charset中定义表,例如Windows-1256(由MySQL标记为'cp1256'
),但从您看到的输出看起来似乎不可能,这是UTF-8解码为窗口1252。
所以我看到的可能性是你正在回显数据库中的数据,并看到这个字符串。在发送任何输出之前,您需要告诉浏览器数据是UTF-8:
<?php
header("Content-Type: text/html; charset=utf-8");
如果您已经这样做或者这没有用,那么您的数据可能在导入过程中被错误地转换。
如果是这种情况,并且您可以重新导入,请确保在导出数据时输出为utf-8,并在导入导出的数据时,将其视为utf-8。
答案 1 :(得分:0)
这件事发生在我身上,我正在使用htmlentities()
,但当我使用htmlspecialchars($string, ENT_QUOTES, 'UTF-8');
时,问题就解决了。
希望你有同样的问题。