MySQL の character set まとめ

現在設定されてる charset の確認方法

mysql> show variables like 'cha%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | latin1                     |
| character_set_server     | latin1                     |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.01 sec)

ubuntuでMySQLを普通にapt-getで入れた状態だとこんな感じ。

設定変更

“SET NAMES UTF8;” というクエリを発行すると、
character_set_client, character_set_connection, character_set_results をutf8 に
切り替えることが出来る。
アプリケーションから DB接続直後にこのクエリは昔は定番だったけども
セキュリティ上の問題があるので現在は非推奨、つかぶっちゃけ使用禁止。
http://blog.ohgaki.net/set_namesa_mcb_asc

php だったら mysqli_set_charset( $db, “utf8” ); とか、
“SET NAMES”を使わずに専用の api からやること。

my.conf

上記対応をしても character_set_server や character_set_database は変わらずに
Latin1 のまま。
/etc/mysql/my.cnf を編集して、mysqld のところに

character-set-server=utf8               # ここを追加 by sayoko
skip-character-set-client-handshake     # これも

以上を追加。そして MySQL を再起動。
※ my.cnfの書式 mysql 5.3あたりで変わってるので要確認。
ubuntuのは Ver 5.1.49-1ubuntu8.1-log for debian-linux-gnu on x86_64 ((Ubuntu))
だったりする。

もう一度確認

mysql> show variables like 'cha%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | latin1                     |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.00 sec)

ここまでやっても character_set_database だけは latin1 のまま。
これは既存のデータベースがすでに latin1で作成されているので。
データが少ない初期状態のうちなら、データベースを新規に作り直した方が早い。

create table bbs (
       postno          int unsigned auto_increment not null,
       ...
       msg             varchar(1024),
       addr            char(128),
       PRIMARY KEY(postno)
) default character set utf8;

こんな感じで create table する段階で utf8指定する。
もちろん create database の段階で指定してもいい。

すでにあるDBは

alter database (db-name) character set utf8

This entry was posted in Linux. Bookmark the permalink. Trackback URL: http://homura.ch2.cc/linux/mysql-%e3%81%ae-character-set-%e3%81%be%e3%81%a8%e3%82%81/trackback/

2 Responses to MySQL の character set まとめ

  1. IKAWA says:

    使いやすい日本語入力で作業効率を上げよう
     日本語入力は、非常に利用頻度が高く、作業効率を大きく左右する部分です。しかし、スマートフォンに最初にインストールされている日本語入力アプリは機種によって異なり、自分の使いやすい入力方法が利用できないこともあります。好みのアプリをインストールして、カスタマイズしましょう。
     このレッスンでは、多機能な定番日本語入力アプリ[Simeji](無料)を紹介します。[Simeji]では、いくつもの入力方法が選べます。iPhoneやiPod touchを利用した経験がある人ならば、フルキーボードによるローマ字入力よりも「フリック入力」が使いやすいかもしれません。また、携帯電話での文字入力に慣れている人向けにはケータイ式のテンキー入力や「ポケベル打ち」とも呼ばれる2タッチでの入力にも対応していて、多くの人のクセに合わせることができます。

    [言語とキーボードの設定]を表示する

    [Simeji]を利用可能にする

    [Simeji]を起動する

    入力方法の切り替えを開始する

    入力方法に[Simeji]を選択する

    [Simeji]の利用が設定された

    外部キーボードも利用できる
    Bluetoothを搭載したスマートフォンならば、Bluetooth対応の外付けキーボードを使って文字を入力することもできます。テーブルなどがありキーボードが利用できる場所ならば、高速なキー入力ができて作業がはかどります。ただし、スマートフォンとBluetoothキーボードの組み合わせによっては、利用できないこともあります。キーボードのメーカーのWebサイトなどで対応状況を確認しましょう。

    定番日本語入力アプリ[ATOK]もある
    パソコンや携帯電話などの文字入力ソフトとして、すぐれた変換能力に定評がある「ATOK」シリーズのAndroidアプリ[ATOK](1500円)が登場しています。15日間まで利用できる無料の[ATOKお試し版]もあるので、興味のある人は、お試し版をインストールして使い心地を試してみましょう。

    音声入力もできる
    [Simeji]のキーボードにある[SYM]をロングタッチすると、音声入力が起動し、この状態で話した言葉を入力することができます。このとき、一気に長く話しても音声認識ができないので、2〜3単語ずつを目安に区切って話しましょう。

    [Simeji]をカスタマイズする方法
    [Simeji]のキーボードを表示した状態で、左下の[あA]をロングタッチすると[Simeji]が表示されます。ここで[その他の入力方法]をタップすると、[Simeji]の利用を停止し、他の日本語入力アプリに切り替えることができます。[Simejiの設定]をタップすると、[Simeji]のカスタマイズが行えます。設定項目は[キー音( 入力時に音を出す)]、[キー操作バイブ(入力時にバイブで反応する)]といった基本的な動作から詳細に設定できます。そのような中でもっとも重要なのが[日本語ソフトキーボード]の[日本語(フリック)]です。タップすると初期設定の[フリック]のほか、以下の入力方法が選択できます。なお、設定した内容は[設定の入出力]-[保存]をタップすることで、microSDカードに保存することができます。

    [Simeji]で利用できる日本語の入力方法
    フリック 「あ」〜「わ」行の「あ」段の文字から上下左右にフリックして「い」〜「お」段の文字を入力
    ポケベル 最初に「あ」〜「わ」行を選択し、次に「あ」〜「お」段を選択するという2タッチで文字を入力
    ケータイ 「あ」〜「わ」を1〜5回連続してタップすることで「あ」〜「お」段の文字を入力
    フルキーボード ローマ字入力
    Azertyキーボード ローマ字入力(主にフランス語圏で利用されるキー配列)

  2. IKAWA says:

    ドコモのスマートフォンのXPERIAを買ったのですが、キーボードで日本語入力ができ…
    hairdo1979さん

    ドコモのスマートフォンのXPERIAを買ったのですが、キーボードで日本語入力ができなくなってしまいました。どうすれば、日本語入力ができるようになりますか?
    補足
    「あAa12」の表示のところが、なんだかキーボードのマークになっていて、長押しすらできない状況なんですけど、
    なおりますか?

    違反報告
    質問日時:2011/3/27 13:28:21
    解決日時:2011/3/27 19:43:38
    回答数:2
    お礼:知恵コイン25枚
    閲覧数:842
    ソーシャルブックマークへ投稿:
    Yahoo!ブックマークへ投稿
    はてなブックマークへ投稿
    (ソーシャルブックマークとは)
    ベストアンサーに選ばれた回答
    kojikoji_redredさん

    1.
    日本語入力に対応していないキーボードを使われているからだと思います。
    メールの作成画面など、どこでも結構ですので文字入力画面にて文字を入力される部分を長押ししてください。
    メニューが出てきますので、たぶん下のほうにある「入力方法」を選択してください。
    一覧がでてきますのでその中にあるPOBox(Touch)という名前をチェックしてください。
    これで日本語入力できる筈です。

    2.
    POBoxについては入力キー左下に文字(あAa12)という表示がありますので、これをタッチするごとに日本語・英語(全半)・数字(全半)と入力形式が変わります。

    上記症状と違う場合はもう少し詳しく状況を教えてくださいね。

    追記:

    その入力方法はPOBoxでしょうか。(POBoxであれば問題の左下キーの上に工具が2本並んでいる設定メニュー用のキーがあるはずです)
    私のXperiaではPOBox入力だとそのような状態になりません。
    ただ、入力方法がスタンダードキーボードの場合、キーボードのマークが表示され長押しできません。
    一番上に書いた1.の対処はされましたか?

    違反報告
    編集日時:2011/3/27 14:22:51回答日時:2011/3/27 13:48:00
    質問した人からのコメント

    結局色々試してみたのですが分からず、ドコモショップに持っていきました。どうやらアプリをダウンロードしたときに、ウィルスが入り込んでしまったそうです。初期化をしてもらい、なんとかなおりました。色々なとご丁寧に説明していただきありがとうございました。