2

私のサイトにUTF8の問題があり、解決できません(理解できません)。私が使うとき...

$mysqli->set_charset('utf8');

...私のウェブスペースでは、特別な文字が正しく表示されません。この関数を削除すると、データベースクエリのすべての特殊文字が正しく表示されます。私のローカルシステムでは、その逆です(set_charset('utf8')がないと、文字が適切に表示されません)

また、これが私のウェブホストの問題であるかどうかを確認するためのテストスクリプトを作成しました。テストは私のウェブスペースとローカルで正しく機能します。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<?php
$db = new mysqli( bla bla );
$db->set_charset('utf8');
$sql  = "SELECT pages_title
         FROM pages
         WHERE pages_title = 'Günstige Tablet PCs'";
$result = $db->prepare( $sql );
$result->execute();
$result->bind_result( $title );
$result->store_result();
$result->fetch();
$result->free_result(); 

echo "Title: ". $title;

今、私は問題があり得るアイデアを使い果たしています。すべてが正しく設定されています:

  1. データベース自体はutf8-general-ciに設定されています
  2. ファイルはUTF8でフォーマットされています。
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />が設定されます。

テストスクリプトが正しく実行されているため、問題はコード内にあるはずですが、utf8_encode / decodeなどで何もしていないため、エラーの原因がわかりませんでした。

何か案は??ありがとう!!

4

3 に答える 3

2

BOMで問題が発生する可能性があります。コード全体を別のテキストエディタにコピーして貼り付け、「BOMなしのUnicode」(Notepad ++など)として保存してみてください。

于 2012-12-16T19:20:09.740 に答える
1

これを試して、それを解決する必要があります。

<?php header('Content-Type: text/html; charset=UTF-8'); ?>
于 2012-12-16T19:17:22.530 に答える
0

適切なヘッダーを送信する必要があります。

header('Content-Type: text/html; charset=utf-8');

デフォルトで送信されるヘッダーは、サーバー(apacheなど)の構成によって異なります。これにより、さまざまな環境で混乱が生じる可能性があります。

于 2012-12-16T19:19:25.183 に答える