UTF8 문자 집합에있는 문자를 검색하는 것과 관련하여 Drupal 6에서 매우 이상한 문제가 있습니다. 흥미롭게도 데이터를 올바르게 검색하는 데 문제가있는 것은 drupal API 인 것 같습니다. 내가 직접 mysqli와 명령 행을 사용하여 데이터를 얻었을 때 모든 것이 괜찮은 것 같다. 아래 그림과 같이Drupal 6 db_query 문제 utf8 문자를 가져 오는 중
데이터베이스 및 테이블은 올바른 문자 집합 및 데이터 정렬로 설정됩니다
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 |
는 mysqli를 사용하여, 드루팔 API (db_query)를 사용하여 동일한 데이터를 검색하고 직접 접근 방식을 사용하고 있습니다.
직접 접근 : 드루팔 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);
}
결과 :
294 ДОСЛОВÐО
295 EXAMEN
296 REVISIÓN
012,351
294 ДОСЛОВНО
295 EXAMEN
296 REVISIÓN
드루팔 DB API를 사용하여 : 직접 접근 방식의
$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);
}
결과
drupal db API가 데이터를 검색하는 방법에 심각한 문제가있어 UTF 데이터가 표시 될 때 UTF 데이터가 뭉치 게됩니다. 메타 헤더 정보가 정확하게 누군가가 발생 될 수있는 것과 같이 올바른 방향으로 날 지점 수
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
즉 설정되어 잘못 뭐하는 거지 어디 위의 모든 결과는 HTML 페이지에 표시되고있다. 매우 감사.
'settings.php' 파일은 어떻게 구성되어 있습니까? '$ db_url' 변수가 있는데 어떻게 생겼습니까? 물론 형식에 관심이있는 자격 증명은 필요하지 않습니다. 이건'$ db_url = 'mysqli : // username : password @ localhost/databasename';'입니까? – Max
최대 - 네, db url은 다음과 같이 지정했습니다 : $ db_url = 'mysqli : // mydbusername : mydbpassword @ localhost/mydbname'; – mackelkin
이 경우 Drupal 함수 ('db_query','db_fetch_object')는 PHP의 mysqli 함수를 감싸는 래퍼 일 뿐이 기 때문에 이상합니다. 그리고 그것들은 올바른 결과를 리턴하는 것 같습니다 ... – Max