my.cnfを介してMySQLの文字セットを変更しようとしましたが、失敗しました。以下の文字セット設定を追加しました:
# The MySQL server
[mysqld]
port = 3306
socket = /var/lib/mysql/mysql.sock
skip-locking
key_buffer = 16M
max_allowed_packet = 1M
table_cache = 64
sort_buffer_size = 512K
net_buffer_length = 8K
read_buffer_size = 256K
read_rnd_buffer_size = 512K
myisam_sort_buffer_size = 8M
# ------------- MYSQL CHARSETS --------------
character_set_system = utf8
character_set_server = utf8
character_set_results = utf8
character_set_database = utf8
character_set_connection = utf8
character_set_client = utf8
collation_connection = utf8_general_ci
collation_database = utf8_general_ci
collation_server = utf8_general_ci
これらを有効にすると、MySQLが起動しませんでした。すべてがデフォルトでutf8になっていることを確認するにはどうすればよいですか?
更新
UTF8であることに問題があるいくつかの場所がまだあります
character_set_client utf8
character_set_connection utf8
character_set_database latin1
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 latin1_swedish_ci
collation_server latin1_swedish_ci
残念ながら私はまだ解決策を思いついていません...何かアイデアはありますか?
現在、私はこの構成を正常に使用しています:
[mysqld]
default-character-set = utf8
init-connect='SET NAMES utf8'
character-set-server = utf8
[mysql]
default-character-set = utf8
しかし、PHPMyAdminはまだ一部のlatin1を表示しています
character_set_client utf8
character_set_connection utf8
character_set_database latin1
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 latin1_swedish_ci
collation_server latin1_swedish_ci
以下をmy.cnfファイルに組み込む必要があります
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set = utf8
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
詳細については、次のマニュアルページを参照してください。
http://dev.mysql.com/doc/refman/5.6/en/charset-configuration.html
http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_character_set_system
http://dev.mysql.com/doc/refman/5.6/en/server-system-variables.html#sysvar_character_set_server
Markの回答に応じて、既存のテーブル/データベースを正しい文字セットに変換する必要がある場合は、適切なALTER
クエリが必要になります。以下のようなもの:
ALTER TABLE `table` CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
あるいは、すばらしいPHPスクリプト ここ があります。
ベンの答えは問題ありませんが、設定を変更しても、既存のテーブルの文字セットまたは照合順序は絶対に変更されません。適切なALTER TABLEステートメントでそれを行います。
指定しない場合、テーブルはデータベースのデフォルトの文字セットで作成されます。これは、ALTER DATABASEで調整できるデータベースごとの設定です。これもmy.cnfで設定されていません。