背景: テーブルがあります。この表はlatin1形式です。この表の個々の列はutf8に設定されています。我々が議論するために桜を選ぶ列は、タイトルであり、これはutf8列の1つです。ウェブサイトは、apacheとメタタグの両方でutf8用に設定されています。試験としてPHP 5.2 + mysql 5.1文字エンコーディングの問題
私はタイトルフィールドにdécor or ©
を保存し、
select title, LENGTH(title) as len, CHAR_LENGTH(title) as chlen
from events where length(title) != char_length(title)
を実行する場合、私は戻って、結果としてdécor or ©, 12, 10
を取得します。これはデータが本当に私のutf8列に適切に保存されていることを示すものと期待されます。
しかし、タイトルをページにエコーすると、前述のように、ページ上の文字エンコードがutf-8に設定されているので、それは私には意味がないd�cor or �
になります。
この最終的な詳細が異なるかどうかはわかりませんが、ページを編集して変更されたテキストを再送信すると、データベースにもページに表示されてもd%uFFFDcor or %uFFFD
になります。さらに提出すると変更されません。
実際の質問: 誰かが私が間違っているかもしれないという考えを持っていますか? :-P
は2にすることはできません、そうでない場合は代わりに1個の置換文字の文字オフ2があると思います –
@Ignacio:。。良い点...私はそれに応じて編集します – ircmaxell
db接続を開いた直後にブートストラッププロセスで提供されたクエリを実行しようとしました;データベースに保存された結果は次のようになります: 'd?cor or?'と私はvar_dump'dは、他の何かが実行される前にdbから来る結果と違いはありません。これまでの助けてくれてありがとう。 :) – jdsmith2816