当我使用PHP代码时,我可以成功地将阿拉伯语数据存储在MySQL数据库中,但会以错误的格式返回数据。请注意以下内容:
-
在我的配置文件中,我有以下代码:
$this->conn->exec("SET CHARACTER SET utf8");
-
标题更改如下:
header('Content-Type: text/html; charset=UTF-8');
编码应在三点更改:
- 从一开始就不是utf8
- PDO连接将其更改为默认值
- 表/DB编码不是utf8
在这里,我们将检查选项#1
首先检查您的文本编码
$text = "أهلا وسهلا!";
var_dump(mb_detect_encoding($text));
将您的文本放入$text变量中,并在浏览器中运行此脚本(仅用于编码检查)mb_detect_encoding函数应该会让您知道文本编码。
在你知道编码之后,你可以使用iconv函数并转换它。然后,使用iconv函数转换为UTF8,例如:
if(mb_detect_encoding($text)!== "UTF-8")
$decoded_text = iconv(mb_detect_encoding($text), 'UTF-8', $text);
您应该使所有编码格式都是相同的
遵循以下步骤:
1年数据库表应具有utf8_general_ci编码
2-您的sql查询应该使用相同的查询,方法是将以下内容放在针叶树文件中的mysqli连接之后
$db->query("SET NAMES 'utf8'");
3-你的页面应该有相同的元字符编码
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
按照前面的3个步骤,一切都会顺利
要正确接受、存储和显示多字节字符集,必须确保三件事:数据库列使用正确的数据类型,脚本使用多字节安全函数编写,输出格式正确。
在MySQL中,您需要将阿拉伯语文本存储在utf8mb4类型的列中。
如果在脚本中使用任何文本编辑或格式化,则脚本需要在多字节感知编辑器中编写,并使用多字节安全功能。
最后,您的Web服务器需要发送utf-8,浏览器需要知道如何显示utf-8-请参阅如何最好地配置PHP来处理utf-8网站