WordPress上で 文字化け(原因:MYSQL)

平成30年1月28日(日曜日)

以下現象発生、素のHPでも同現象有り、結果PHPでもWordPressでも無く、表題のとおり。

現象:

??????(??????)??????????????????????-?? ?????????(??????) (1)

対処:

//
$mysqli = new mysqli($db_sever, $user_name, $password, $db_name);
if (mysqli_connect_error()) {
    die('Connect Error (' . mysqli_connect_errno() . ') '
        . mysqli_connect_error());
}
mysqli_set_charset($mysqli, "utf8");
 
if ($result = $mysqli->query("SELECT id FROM " .$table_name)) {
    while ($row = $result->fetch_assoc()) {
        echo $row["id"] . PHP_EOL ;
    }
    $result->close();
}
//

原因:
mysql設定(SAKURA スタンダードプラン)文字コード設定 ujis(euc-jp)
DBテーブル格納文字コード utf8_general_ci
両者のコードが異なり、結果euc-jpの文字コードが返されるか。

その他、参考:
SAKURAの管理ツールでは、以下↓
MySQL の文字セット: UTF-8 Unicode (utf8)
しかしながら、SSHログイン後、mysqlコマンド
mysql> show variables like “chara%”;
にて確認すると、ujis設定となっている。
+————————–+—————————-+
| Variable_name | Value |
+————————–+—————————-+
| character_set_client | ujis |
| character_set_connection | ujis |
| character_set_database | ujis |
| character_set_filesystem | binary |
| character_set_results | ujis |
| character_set_server | ujis |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+————————–+—————————-+
その他、MySQL5系はテーブル毎に任意の文字コードを設定することが可能など(未実施)

link:
さくらインターネットスタンダードプランmysqlの文字コードの扱い(utf8, euc-jp)