Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Utf 8 Drupal 6数据库查询问题检索utf8字符_Utf 8_Drupal 6 - Fatal编程技术网

Utf 8 Drupal 6数据库查询问题检索utf8字符

Utf 8 Drupal 6数据库查询问题检索utf8字符,utf-8,drupal-6,Utf 8,Drupal 6,关于检索UTF8字符集中的字符,Drupal6有一个非常奇怪的问题。有趣的是,似乎只有drupal API在正确检索数据方面存在问题;当我使用mysqli和命令行直接获取数据时,一切似乎都正常 mysql> select id, name from web_gfo_article_type; | 294 | ДОСЛОВНО | | 295 | EXAMEN

关于检索UTF8字符集中的字符,Drupal6有一个非常奇怪的问题。有趣的是,似乎只有drupal API在正确检索数据方面存在问题;当我使用mysqli和命令行直接获取数据时,一切似乎都正常

   mysql> select id, name from web_gfo_article_type;
   | 294 | ДОСЛОВНО                                                      |
   | 295 | EXAMEN                                                        |
   | 296 | REVISIÓN                                                      |
数据库和表设置为正确的字符集和排序规则,如下所示:

    mysql> show variables like "collation_%";
+----------------------+-----------------+
| Variable_name        | Value           |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database   | utf8_unicode_ci |
| collation_server     | utf8_unicode_ci |
+----------------------+-----------------+
3 rows in set (0.00 sec)

mysql> show variables like "char_%";
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)
当我从命令行检索数据时,一切似乎都正常

   mysql> select id, name from web_gfo_article_type;
   | 294 | ДОСЛОВНО                                                      |
   | 295 | EXAMEN                                                        |
   | 296 | REVISIÓN                                                      |
在我的一个定制drupal模块中,我使用DrupalAPI(db_查询)和直接方法(使用mysqli)检索相同的数据

直接方法:

$mysqli = new mysqli("localhost", "my_db_user_name", "my_db_password", "my_db_name");
$r = $mysqli->query("select id, name from web_gfo_article_type");

while ($row = $r->fetch_object()) {
    print('<br/>' . $row->id . ' ' . $row->name);
}
294 ДОСЛОВНО
295 EXAMEN
296 REVISIÓN
使用drupal db API:

$r = db_query("select id, name from web_gfo_article_type");

while ($row = db_fetch_object($r)) {
    print('<br/>' . $row->id . ' ' . $row->name);
}
正如您可以清楚地看到的,DrupalDBAPI检索数据的方式出现了严重的错误,这导致UTF数据在呈现时被咀嚼。所有上述结果都显示在一个HTML页面中,其中的元头信息已正确设置,即

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />


有没有人能给我指出正确的方向,告诉我会发生什么,我做错了什么。非常感谢。

请确保您编写查询的.module文件(?)使用utf-8?

您的
设置.php
文件是如何配置的?您有一个
$db_url
变量,它看起来怎么样?当然,我们不需要凭证,只对格式感兴趣。是这样的吗mysqli://username:password@localhost/databasename'?Max-是的,我的数据库url就像您所指出的:$db\u url='1mysqli://mydbusername:mydbpassword@localhost/mydbname';奇怪的是,在这种情况下,Drupal函数(
db\u query
db\u fetch\u object
)只是PHP中
mysqli
函数的包装器。这些似乎返回了正确的结果……这可能是一个很长的过程,但是你能把表名放在这样的花括号中,看看你得到了什么:
$r=db\u query(“select id,name from{web\u gfo\u article\u type}”)