争吵希腊字符

时间:2016-12-17 03:23:58

标签: mysql wordpress fonts

我有一个使用MySQL数据库的Wordpress网站。我想在我的数据库中放一个希腊词(Ἀπὸ)。 (请注意它在Stack Overflow界面中呈现的效果如何。)如果我这样做,它会很好地进入表中并在Sequel Pro中渲染得很好。但是,当我使用一些PHP从表中读取并将其添加到我的Wordpress网站上的页面时,它呈现???而不是Ἀπὸ。但是,如果我将这个单词直接添加到Wordpress界面中的页面,它会在界面和渲染页面上显示希腊字符。我看了一下显示的页面???我看到了这句话:

<meta charset='utf-8'>

我认为应该只需要渲染这些希腊字符。我错过了什么?

修改

因为有人要求它:

CREATE TABLE `scripture` (
  `id` int(6) unsigned NOT NULL AUTO_INCREMENT,
  `translation` varchar(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `content` varchar(1200) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `book` varchar(20) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `chapter` int(3) NOT NULL,
  `verse` varchar(7) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `first_verse` int(3) DEFAULT NULL,
  `topic` varchar(200) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',
  `related1` int(6) DEFAULT NULL,
  `related2` int(6) DEFAULT NULL,
  `related3` int(6) DEFAULT NULL,
  `related4` int(6) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `book_chapter_verse_translation` (`book`,`chapter`,`verse`,`translation`),
  KEY `translation_book_chapter_first_verse` (`translation`,`book`,`chapter`,`first_verse`)
) ENGINE=InnoDB AUTO_INCREMENT=1129 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server latin1
character_set_system utf8
character_sets_dir /rdsdbbin/mysel-5.6.23.R1/share/charsets/

wp-config.php具有以下内容:

/** Database Charset to use in creating database tables. */
define('DB_CHARSET', 'utf8');

/** The Database Collate type. Don't change this if in doubt. */
define('DB_COLLATE', '');

我尝试过将它们评论出去,我尝试过制作DB_COLLATE = utf8_unicode_ci

第二次修改

解决方案是在查询之前添加以下PHP代码:

$mysqli->set_charset("utf8");

2 个答案:

答案 0 :(得分:1)

this中,查找“问号”。

特别是,它表明这些可能需要检查:

  • 要存储的字节不编码为utf8 / utf8mb4。解决这个问题。
  • 数据库中的列是CHARACTER SET utf8(或utf8mb4)。解决这个问题。
  • 另外,检查读取时的连接是否为UTF-8。

存储数据时出现问题;数据丢失了。这可以通过执行SELECT HEX(col)...来确认 - 它将是3F?的十六进制。

如果仍有问题,请提供SHOW CREATE TABLESHOW VARIABLES LIKE 'char%'和连接参数。

答案 1 :(得分:1)

特殊字符或希腊字可以保存在带有次要的数据库中 以下更改:

  • 将DB charset和collat​​ion更改为utf8
  

mysql_query(“SET NAMES'utf8'”);

     

mysql_query(“SET CHARACTER SET'utf8'”)

  • 将列的字符集更改为utf8“exp:utf8_general_ci”
  • 更改您插入和更新查询并在值前面添加大写“N”。

经验:

INSERT INTO table_name field1, field2 VALUES(N'value1', N'value2');

这将保存所有特殊字符,无需任何修改或编码。