2012-07-15 63 views
1

我创建了一个使用PHP 5.3,MySQL 5和PHPMyAdmin 3.4的阿拉伯网站。阿拉伯字体在线编辑后显示为问号

在每一页上,我都使用“utf-8”字符集。包括我在每一页上以下行:

http://jsfiddle.net/Hh7mk/

网站工作正常离线(本地服务器(本地主机)上)。即使在我编辑并将新的阿拉伯文写入数据库之后。

问题是网站在线时。所有阿拉伯文字体都能正确显示,但在我在线编辑或插入新的阿拉伯文字后,新的文字显示为问号。

我的设置(在线):

  • 的phpMyAdmin的MySQL连接校对:utf8_general_ci。

  • PHPMyAdmin MySQL charset:UTF-8 Unicode(utf8)。

  • 数据库和表的整理:utf8_general_ci。

在连接文件中,我包含了mysqli查询SET NAMES'utf8'和SET CHARACTER SET utf8。

我也尝试将排序规则更改为“cp1256_general_ci”,并将页面字符设置为“windows-1256”,但字体仍显示为问号。

为什么在插入/在线编辑它们后,阿拉伯字体显示为问号?如何解决这个问题?

预先感谢您

+0

你是如何在线编辑它的? – Ansari 2012-07-15 07:08:30

+0

我使用表单将数据发布到数据库中,并使用TinyMCE作为编辑器。在更新数据之前,我使用mysqli查询建立了一个连接,其中包含查询SET NAMES'utf8'和SET CHARACTER SET utf8 – Bayu 2012-07-15 07:14:49

+0

尝试隔离错误的来源。你有通过shell或phpmyadmin访问数据库吗?你能记录你的表单发送的更新查询吗?你可以尝试使用简单的文本框而不是TinyMCE吗? – Ansari 2012-07-15 07:16:47

回答

3

您是否尝试过使用mysql_set_charset

mysql_set_charset("utf8"); 
+0

是的,在我的解释中我提到我在连接文件中使用了mysqli查询SET CHARACTER SET utf8。它脱机工作,但不在线 – Bayu 2012-07-15 06:51:32

0

看来你是正确的做的一切。但是在插入数据之前你做了这些吗?尝试清理数据库并从头开始插入

0

ASCII? mark的代码是63,这是所有阿拉伯字符的第一个字节(每个字符有两个字节)。让你的字符串转向?意味着只有你的角色的第一个字节被存储/检索。这表明某个地方是你的存储/检索过程,你有一个瓶颈,只有ASCII字符可以通过。我的赌注是在MySQL上。您可以找到的最好方法是使用本地服务器的代码(本地PhpMyAdmin应该做的)连接到您的生产服务器的MySQL。如果问题仍然存在,则表明它是MySQL的配置(考虑到您的本地PhpMyAdmin与您的本地MySQL工作正常)。我只能给你如何调查问题的想法。你需要自己找到问题本身。