【问题标题】:Wordpress posts display only ????? characters after being saved. (unicode characters only)WordPress 帖子仅显示 ?????保存后的字符。 (仅限 unicode 字符)
【发布时间】:2016-07-26 14:29:39
【问题描述】:

尝试参考有关此问题的所有其他帖子,但没有成功。

问题是,有英语、泰米尔语和僧伽罗语(斯里兰卡的母语)的帖子。英文文章不错。但是对于僧伽罗语和泰米尔语的字符显示????? ?? ???保存或更新后。我们所做的是从谷歌翻译复制粘贴,直接音译到wordpress编辑器。

我检查了 mysql 表,它还显示了??? ???人物。但是当使用 phpmyadmin 直接插入数据库时​​,字符显示正常。在 phpmyadmmin 和 wordpress 中都有。但是一旦编辑或更新,它就会恢复原状??? ????。

Wordpress 字符集是 utf8,整理是 ''。尝试将它们更改为各种设置并注释掉,但到目前为止没有任何效果。

有谁知道解决办法。我们在另一台测试服务器上进行了相同的设置,并且所有功能都可以在该服务器上正常运行,没有任何问题。是否有导致问题的特定 PHP 设置(顺便说一句,php ini 中的默认字符集设置为 utf8)?

【问题讨论】:

  • wp-config.php 文件中设置的database character setcollation 是什么?要查找的值将是 DB_CHARSETDB_COLLATE
  • 另一件要考虑的是WP 版本。在旧版本中(我相信最高 2.2)默认的 DB 字符集/排序规则在 latin 中。所以也请检查一下。
  • @HimelNagRana DB-CHARSET 是 utf8。 DB-COLLATE 是 ' '。空值。 DB 字符集是 utf8mb4_unicode_ci。 wp 版本是最新的 4.x.x。感谢您的答复。 :D
  • 您好,感谢您的通知。您可以通过将DB_COLLATE 设置为utf8_general_ci 来检查吗?它应该工作。 (y)
  • phpmyadmin 插入不是真实场景。但证明DB设置没问题。现在您必须检查从WP 插入的时间是否有效。我的意思是不要更新过去的帖子 - 尝试创建新帖子。看看@RickJames 的回答——他把事情分解得很好。

标签: php mysql wordpress unicode utf-8


【解决方案1】:

CHARSET 很重要; COLLATE 不是(对于这个问题)。

可能发生了什么。

  • 你是INSERTing非西欧文本
  • 您说SET NAMES utf8 声明客户端字节是utf8 编码的(正确)。
  • 但是这些列被声明为CHARSET latin1
  • 由于没有办法将汉字转成latin1,'?'已存储。

请提供SHOW CREATE TABLE,以便我们验证该列不是utf8

【讨论】:

  • 感谢您的回复。有问题的列(帖子标题、帖子内容)是 utf8。但是 wp-posts 表上的其他一些列与您所说的拉丁语一样。但事实仍然是,每当我通过 phpmyadmin 将文本直接插入到表中时,站点中就会显示,只有在再次保存后(更新帖子后)它才会恢复为???
  • 混合 WP 和 phpmyadmin?确保一切都使用 utf8 连接。不要使用 user=root。
猜你喜欢
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-18
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多