当我使用PHP代码时,我可以成功地将阿拉伯数据存储在MySQL数据库中,但是以错误的格式返回数据。请注意以下事项:
在我的配置文件中,我有以下代码:
$this->conn->exec("SET CHARACTER SET utf8");
标题已更改如下:
header('Content-Type: text/html; charset=UTF-8');
答案 0 :(得分: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 :(得分:0)
要正确接受,存储和显示多字节字符集,您必须确保三件事:数据库列使用正确的数据类型,脚本使用多字节安全函数编写,输出格式正确
在MySQL中,您需要将阿拉伯语文本存储在utf8mb4类型的列中。
如果在脚本中使用任何文本编辑或格式化,则需要在多字节识别编辑器中编写脚本并使用multi-byte safe函数。
最后你的网络服务器需要发送utf-8并且浏览器需要知道显示utf-8 - 请参阅How to best configure PHP to handle a UTF-8 website
答案 2 :(得分:0)
你应该使所有编码格式相同
按照以下步骤操作:
1 - 你的db表应该有utf8_general_ci编码
2 - 你的sql查询应该通过在conifg文件中的mysqli连接之后添加以下内容来完成相同的查询
$db->query("SET NAMES 'utf8'");
3 - 您的页面应具有相同的元字符编码
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
按照前面的3个步骤进行,一切顺利