php/mysql 中的阿拉伯文本有时会出现“???”有时在 select/insert 语句后出现“Ùؤتا”

2023-12-31

我有一个正在进行的项目,我需要从 mysql 表中获取阿拉伯文本,并且不时插入/更新它们。我的数据库排序规则位于“utf8_general_ci”中。

一开始我发现了问号“???”获取一些阿拉伯语数据后。然后我执行了“SET CHARACTER SET utf8”。该特定问题的问号问题得到了解决,但其他阿拉伯语数据开始显示乱码“Ùؤتا”。在项目中,我还需要从包含阿拉伯文本的 csv 中获取一些数据。

这是我在字符集执行之前和之后找到的json数据:

[{
  "id": 148,
  "domain": 0,
  "group_name": "ATX ??????????",
  "score": 0,
  "player_name": "لاعب واحد",
  "created_at": "2015-10-26 13:01:23"
},
{
  "id": 148,
  "domain": 0,
  "group_name": "???? ???????",
  "score": 1,
  "player_name": "اثنين من لاعب",
  "created_at": "2015-10-26 12:59:57"
}]

// ---------------------------------------
// After executing "SET CHARACTER SET utf8"
// ---------------------------------------  


[{
  "id": 148,
  "domain": 0,
  "group_name": "ATX توكوروزاوا",
  "score": 0,
  "player_name": "مؤتا",
  "created_at": "2015-10-26 13:01:23"
},
{
  "user_id": 148,
  "domain": 0,
  "group_name": "لندن دينيموز",
  "score": 1,
  "player_name": "كابوا",
  "created_at": "2015-10-26 12:59:57"
}]

谁能告诉我这里出了什么问题吗?我正在尝试解决这个问题,但找不到任何解决方案。


مؤتا是 Mojibake 的مؤتا:

  • 客户端中的字节已正确编码为 utf8(良好)。
  • 您连接了SET NAMES latin1 (or set_charset('latin1')或...),可能是默认的。 (本来应该是utf8.)
  • 表中的列可能是也可能不是CHARACTER SET utf8,但本来应该是这样的。

لاعب可能是“双重编码”——避免这条路径。

"ATX ??????????" --

大概有4个地方需要建立utf8。

  • 数据库中的列 -- 使用SHOW CREATE TABLE验证它们是否显式设置为 utf8,或从表定义中默认设置。 (改变数据库还不够default.)
  • 客户端和服务器之间的连接。看SET NAMES utf8.
  • 你拥有的字节数。 (情况大概就是这样。)
  • 如果您在网页中显示文本,请检查<meta> tag.

也可以看看全程UTF-8 https://stackoverflow.com/questions/279170/utf-8-all-the-way-through

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

php/mysql 中的阿拉伯文本有时会出现“???”有时在 select/insert 语句后出现“Ùؤتا” 的相关文章