2014-11-26 4 views
-1

Я пытаюсь повторить китайское слово в PHP из данных таблицы, но, кажется, он не отображается правильноPHP UTF8 не отображаются китайские иероглифы правильно

Вот мой код

<?php 
echo'<?xml version="1.0" encoding="utf-8"?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-Hans" lang="zh-Hans"> 
'; 
?> 
<head> 
<title>A Test Page</title> 
</head> 
<body> 
<?php 
//Insert connection string 
require_once 'confx/confx.php'; 
$ID = 222; 
$conn = odbc_connect($odbc_dsn, $odbc_usr, $odbc_pwd); 
if(!$conn) { die('Epic Fail!'); } 
$query = odbc_exec($conn, "SELECT * FROM member WHERE userid = '$ID'"); 
$result = odbc_result($query, 'usernick'); 
echo $result; 
odbc_free_result($query); 
?> 
</body> 
</html> 

Я спас исходный код в UTF-8, но все же он не работает должным образом. Вместо отображения предполагаемого текста он выводит ???

+1

Прекрасно работает! См.: Http://ideone.com/sxvWRh – Rizier123

+0

Им жаль за неправильные детали моего вопроса. Я внес изменения. – CudoX

ответ

1

Удалить эту строку echo'<?xml version="1.0" encoding="utf-8"?>. Затем переработайте свой код, чтобы он выглядел (совместим с HTML5). Держите записку атрибута meta в заголовке:

<!DOCTYPE html> 
<html lang="zh-Hans"> 
<head> 
<title>A Test Page</title> 
<meta charset="utf-8"> 
</head> 
<body> 

<?php 
// Start PHP code from here 
$value = "黄后乎"; 
echo $value; 
?> 
</body> 
</html> 

Примечание: HTML lang атрибут может быть использован для объявления язык веб-страницы или части веб-страницы. Это предназначено для оказания помощи поисковым системам и браузерам.

EDIT:

Вы должны указать SQL`s привести кодировку, поручив сервер MySQL, ДО ваш фактический запрос, например:

$query = odbc_exec($conn, "SET NAMES 'utf8'"); 

$query = odbc_exec($conn, "SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'"); 

//Your actual DB query 
$query = odbc_exec($conn, "SELECT * FROM member WHERE userid = ". (int) $ID); 
//Note the `(int) $ID` section, this is in order to prevent SQL injection attack. 
+0

Извиняюсь, чего-то не хватает по моему вопросу. теперь отредактирует. – CudoX

+0

, пожалуйста, проверьте изменения, которые я сделал. Он по-прежнему не печатает правильно. – CudoX

+0

Я не понимаю, почему мой вывод все еще вопросительный знак. – CudoX

0
<!DOCTYPE html> 
<?php 
header('Content-Type: text/html; charset=utf-8'); 
?> 
<html lang="zh-Hans"> 
<head> 
<title>A Test Page</title> 
    <head> 
    <title>A Test Page</title> 
    </head> 
    <body> 
    <?php 
    $value = "黄后乎"; 
    echo $value; 
    ?> 

+0

Прошу прощения за мою ошибку в моем вопросе. Я сделал редактирование. – CudoX

0
<!DOCTYPE html> 
<html lang="zh-Hans"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
<title>A Test Page</title> 
    <head> 
    <title>A Test Page</title> 
    </head> 
    <body> 
    <?php 
    $value = "黄后乎"; 
    echo $value; 
    ?> 
+0

все еще дает мне вопросительные знаки. – CudoX

+0

'$ result = utf8_encode (odbc_result ($ query, 'usernick'));' просто дал мне тот же результат. – CudoX

+0

Пожалуйста, попробуйте выше фрагмент кода, нужно добавить метатег в html, он работает для меня. –

Смежные вопросы