为什么MySQL不会在PHP中使用正确的字符集返回我的阿拉伯语列?

时间:2014-04-25 19:49:42

标签: php mysql utf-8 arabic

你好。我用PHP构建了一个项目,用阿拉伯语输入数据。这很有效但是当我在PHP中进行查询时,它在Web浏览器中显示为" ?????",问号。我添加了这段代码,但它没有用。

header('Content-Type: text/html; charset=utf-8' );
mysql_set_charset('utf8');
mysql_query('SET NAMES utf8');
mysql_query('SET CHARACTER_SET_CLIENT=utf8');
mysql_query('SET CHARACTER_SET_RESULTS=utf8');

我做错了什么?

2 个答案:

答案 0 :(得分:0)

当您SET NAMES utf8时,这会将字符转换为utf8但是如果表的默认排序规则不是utf8,可能latin1则会导致数据损坏。如果您使用utf8作为字符编码,则必须使用mysqldump表并更改相应转储文件中的编码,然后重新导入数据。确保在编辑转储文件时使用不使用字符编码的文本编辑器。

答案 1 :(得分:0)

确保您正在呈现的HTML页面也具有正确的字符集。如果您进行代码检查以查看PHP服务返回的内容是否包含正确的字符?如果是这样,可能是设置HTML字符集的问题:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

要尝试,请将一些unicode字符直接粘贴到HTML中,例如✓或✔,并确保它们正确显示。

如果他们知道HTML正确传输并由浏览器正确解释。如果没有,你必须从那里开始修复你的HTML字符集。

您的HTML中是否设置了DOCTYPE?如果不是,浏览器可能不关心你的charset。尝试将<!DOCTYPE html>设置为HTML的第一行。

另外请确保在返回任何其他输出之前在PHP中设置标题将不会产生任何影响。