2011-11-12 28 views
0

これは以前に尋ねられたことです。しかし、私は見つけることができる答えに与えられた選択肢を使い果たしてしまったので、私は再び尋ねるでしょう。そして、私が見落としたことがあることを願っています。MySQLを使用した場合のUTF8の問題

まず、私のファイルはUTF8でエンコードされ、私のXMLヘッダー(私はXHTMLを使用しています)はページをUTF8と宣言しています。

第2に、データベースに接続した後に最初に行うことは、クエリ「SET NAMES utf8」を送信することです。

私は次の文を実行しました: "SHOW VARIABLES LIKE 'character_set%'"これらの変数をutf8に設定しました。

私は関連するすべてのテーブルでSHOW CREATE TABLE table_nameを実行しました。私は、そのキャラクタセットがutf8であることを確認しました。

データベースの値を見ると、UTF8エンコードのように見え、コードは&で始まります。これは正しく感じられません、私はなぜ彼らがこのように格納されているのかわかりません。私はPHPのutf8_decodeで私のページにそれらをエコーし​​ようとしましたが、これはうまくいきませんでした。

さらに何ができますか?

(のような私の問題は、タイトルからも明らかでない場合は、文字ÂÂとöのブラウザで正しく表示されません。)

+0

これはPHPの問題のようです。あなたのPHP文字エンコーディングは何に設定されていますか? –

+0

http://www.phpwact.org/php/i18n/charsets#php_s_problem_with_character_encodingこれはあなたにいくつかの洞察を与えてくれるかもしれません –

+0

「正しく表示されない」と言ったら、どういう意味ですか?代わりに何が表示されますか? 1日目から説明した手順を使用したことがありますか、またはこれらの文字をデータベースに格納しているテキストをすでに保存した後に、最近実装したことがありますか? (ASCII以外の文字を正しく処理する手順を実行する前に既に格納されていたテキストは、誤ってエンコードされて格納されることがあります)。 – Hammerite

答えて

1

OK。これはPHPの問題でしたが、htmlspecialcharsの代わりにhtmlentitiesを誤って使用したことが原因です。これらの関数とutf8文字を使用するときには注意してください! htmlspecialcharsはおそらくあなたが望むものです。

0

はあなたが

header('Content-Type: text/html; charset=utf-8');を試みたことがありますか?

0

データベースにstuffを挿入するときは、utf8_decode()で実行し、結果をデータベースから取り出すときはutf8_encode()まで実行してください。

また、ブラウザのエンコード設定でUTF-8エンコードまたは自動検出が選択されていることを確認してください。

+1

本当ですか?もしあなたがそれが助けになると思うなら、私はそれを試してみるでしょうが、dbがutf8にあると考えても意味がありませんか? –

+0

テーブルの正確な照合は何ですか? – budwiser

+0

テーブルはUTF8です(SHOW CREATE TABLEを実行した場合と同様、デフォルトの文字セット= utf8)。私はどのように正確な照合を見つけるか、それが何を意味するかを知らない。 –

関連する問題