これまでのところ、アプリケーションで ü などを処理する方法を明確にしたいと考えています。これらの奇妙な文字を保存/表現するには、UTF-8 を使用することが最善の方法であることを理解しています。
そこで、HTML でメタ文字セットを宣言します。
<meta charset="utf-8">
コンテンツをデータベースに保存します。適切なセットも必要なので、照合を次のように設定しますutf8_general_ci
私の理解では、文字セットを定義できる場所は他にありません。しかし、問題は何ですか?
phpMyAdmin に移動し、コンテンツ フィールドに jülich を追加すると、mysql クエリと PHP を使用してデータベースからコンテンツを削除します。ü が正しく表示されます。しかし、Textarea で表示すると、黒いひし形の図形と白い ? 初期化。
アプリケーションのテキストエリアにテキストを入力して送信すると、テキストエリアに正しく表示されます。しかし、ウェブサイトでは ü と表示されます
phpMyAdmin の起動画面での文字セット設定は次のとおりです。
大安からの質問への回答として:
キャラクター%:
character_set_client = utf8
character_set_connection = utf8
character_set_database = utf8
character_set_filesystem = binary
character_set_results = utf8
character_set_server = latin1
character_set_system = utf8
character_sets_dir = /usr/share/mysql/charsets/
照合%
collation_connection = utf8_general_ci
collation_database = utf8_general_ci
collation_server = latin1_swedish_ci
どうすればこれを解決できますか?
私がこれまでに行ったこと:
追加した:header('Content-type: text/html; charset=utf-8');
追加した:$this->db->setAttribute(PDO::MYSQL_ATTR_INIT_COMMAND, "SET NAMES 'utf8'");
追加した:<meta http-equiv="content-type" content="text/html; charset=utf-8" />
追加した:$this->db = new PDO($dsn, $username, $password,
array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
解決
上記のすべてが魅力のように機能しています。しかし、関数を使用して特定の特別なルーチンを置き換え、それを介しutf8_decode()
て置き換えられた文字列を返す場合、明らかに ü ;(