0

これまでのところ、アプリケーションで ü などを処理する方法を明確にしたいと考えています。これらの奇妙な文字を保存/表現するには、UTF-8 を使用することが最善の方法であることを理解しています。

そこで、HTML でメタ文字セットを宣言します。

<meta charset="utf-8">

コンテンツをデータベースに保存します。適切なセットも必要なので、照合を次のように設定しますutf8_general_ci

ユニコード

私の理解では、文字セットを定義できる場所は他にありません。しかし、問題は何ですか?

phpMyAdmin に移動し、コンテンツ フィールドに jülich を追加すると、mysql クエリと PHP を使用してデータベースからコンテンツを削除します。ü が正しく表示されます。しかし、Textarea で表示すると、黒いひし形の図形と白い ? 初期化。

アプリケーションのテキストエリアにテキストを入力して送信すると、テキストエリアに正しく表示されます。しかし、ウェブサイトでは ü と表示されます

phpMyAdmin の起動画面での文字セット設定は次のとおりです。 phpMyadmin

大安からの質問への回答として:

キャラクター%:

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/

照合%

phpMyadmin

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()て置き換えられた文字列を返す場合、明らかに ü ;(

4

3 に答える 3

1

PDO::MYSQL_ATTR_INIT_COMMAND 定数は、新しいデータベース ハンドルを構築するときに driver_options 配列でのみ使用できることが明確に記載されているため、 MySQL 固有の PDO ドキュメントを実際に読む必要があります。

したがって、setAttribute を使用する代わりに、次のように、PDO ハンドルを作成するときに MYSQL_ATTR_INIT_COMMAND を指定する必要があります。

$this->db = new PDO($dsn, $username, $password,
                    array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
于 2012-04-16T22:09:41.907 に答える
0

phpMyAdmin自体が UTF8 を使用するように適切に構成されていることを確認してください。そうではないように聞こえます。

于 2012-04-16T21:34:56.297 に答える
0

私の推測では、おそらくブラウザ側の問題です。さらにいくつかのチェック事項があります。

  1. あなたのウェブサーバーはContent-Typeヘッダーのために何を送信していますか? それは使用しますcharset=utf-8か?
  2. DOCTYPEHTML ページの で別の文字セットが指定されていますか?
于 2012-04-16T21:06:09.587 に答える