あなたの問題はあなたのcharset-encodingに関連しています。 全体が重要です 文字が正しく表示されない問題を回避するために、コードには同じ文字セットがあります。
適切に定義する必要のある設定はかなりあります。UTF-8には必要な文字がほとんど含まれているため(スカンジナビア語、ギリシャ語、アラビア語、ロシア語など)、UTF-8を強くお勧めします。
特定の文字セットに設定する必要があるもののリストを次に示します。
ヘッダー
-
HTMLヘッダーとPHPヘッダーの両方の文字セットをUTF-8に設定する
-
PHP:
header('Content-Type: text/html; charset=utf-8');
(PHPヘッダーは任意のの前に配置する必要があります 出力(エコー、空白、HTML)!)
-
HTML:
<meta charset=utf-8" />
(HTMLヘッダーは
<head>
内に配置されます /</head>
タグ)
-
接続
-
接続自体で文字セットを指定する必要もあります 。 PDOの例では、次のように実行されます
$handler = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET UTF8"));
charset=utf8
に注意してください -属性。他のMySQL-APIには、将来何か他のものを使用する場合に備えて、これを行うさまざまな方法があります。
データベース
-
データベース そのテーブルはUTF-8に設定する必要があります。文字セットはではないことに注意してください 照合と同じです。すでに照合をUTF-8に設定しているようですが、それは良いことですが、データベース全体とすべてのテーブルに対して同じことを行います。
これを行うには、データベースとテーブルごとに以下のクエリを1回実行します(たとえば、phpMyAdminで)
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
データベースにすでに保存されているデータは、壊れた文字セットが自動的に修正されるわけではないことに注意してください。したがって、データを挿入する前にこれを行うか、文字セットを設定した後にデータを再挿入することが重要です。
php.ini仕様
-
php.ini
で ファイルの場合、次のように、プラットフォームのデフォルトの文字セットを指定する必要がありますdefault_charset = "utf-8";
ファイルエンコーディング
-
.php
も重要です ファイル自体はUTF-8でエンコードされています。 Notepad ++を使用してコードを記述している場合、これはタスクバーの[フォーマット]ドロップダウンで実行できます。
絵文字
- MySQL(テーブル、データベース、接続オブジェクトの両方)では、
utf8mb4
を指定する必要があります。 通常のutf8
とは対照的な文字セット 、絵文字を使用したい場合。
Javaについてはよくわかりませんが、そこでも属性をUTF-8に設定できる場合は、それを実行してください。基本的に、特定の文字セットに設定できるものはすべて同じに設定する必要があります。
上記のすべての指針に従うと、問題が解決する可能性があります。そうでない場合は、次のStackOverflowの投稿をご覧ください: UTF-8全体 。