ぷぎえもん日記
ここはチラシの裏です.基本ぷぎえもんの日記をつづっていきます.更新は数日遅れかも
official blog
Entries
初めてのMysqlと文字化け
どんなタイトルだよって感じですねw.
先月Mysqlコマンドプロンプトで触ってみたら全角文字の日本語が文字化けしまくって結構むかつきました.
検索したら結構私と同じような症状が出ている人がいるみたいでした.
それでいて検索された回答とか見てもほとんど解決しないわけですw.
検索のやり方が悪かったのかな??
素人はみんな文字化けするんじゃないかなってことで記念に書いてみます.
mysqlの設定はutf8にする
エンコードはutf8がブームらしいです.といういことでutf8にします.
Mysqlは5.1で設定はutf8です.
Mysqlフォルダ内にあるmy.iniにはdefault-character-set=utf8と書いてあるかと思います.
Mysqlをインストールするときにutf8を選択しておけばこうなっていると思います.
もしutf8以外があったらMysqlのウィザードからutf8を選択して設定をやりなおします.
あとデータベースとかテーブルも作りなおしたほうが確実です。
練習用のテーブルを作る
Mysqlを立ち上げて,『test』という名前のデータベースを作り,『niceboat』という名前のテーブルを作りました.
tableをつくるsqlはこんな感じです.
CREATE TABLE niceboat (
id int(2) NOT NULL auto_increment,
name varchar(255) ,
caption varchar(255),
PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
id int(2) NOT NULL auto_increment,
name varchar(255) ,
caption varchar(255),
PRIMARY KEY (id)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
実行結果

Mysqlのcharacter設定をみていみる
Mysqlのエンコード設定を見てみます.
コマンドプロンプトに以下のように打ってEnterを押します.
show variables like '%char%';
実行結果

character_setがすべてutf8になっています.
私は全部utf8になっているので問題ないだろうと考えました.
しかしこれだと日本語が入力できませんでした.
utf8で全角文字を入力してみるテスト
試しに『niceboat』テーブルにinsertしてみます.
テストなので文字列は適当です.
コマンドプロンプトへの文字の入力はテキストエディタに打ってからペーストしています.
Insert INTO niceboat (name, caption) VALUES
('ラグナロク','ガンホーのゲーム'),
('パンヤ','ゲームポットのゲーム'),
('トリックスター','ジークレストのゲーム');
('ラグナロク','ガンホーのゲーム'),
('パンヤ','ゲームポットのゲーム'),
('トリックスター','ジークレストのゲーム');
実行結果

エラー1366が出ました.
ERROR 1366 (HY000): Incorrect string value: '\x83\x89\x830.....
これはstringが間違ってるよと言われているみたいです.
Mysqlをutf8で使うときdbの中身がutf8であればいいらしく,他の設定はutf8以外でもいいみたいです.
保障はできませんけどw.
Mysqlのcharacter設定を変えてみる
コマンドプロンプトに以下を打ち込みEnterを押します.
SET character_set_client = sjis;
SET character_set_connection = utf8;
SET character_set_results = sjis;
SET character_set_connection = utf8;
SET character_set_results = sjis;
実行結果

再び以下を入力しcharacterを見てみます.
show variables like '%char%';
実行結果

clientとresultsのところがsjisになりました.
文字化けしないかテストをする
再びINSERT文を流し日本語が入力できるか確認してみます.
Insert INTO niceboat (name, caption) VALUES
('ラグナロク','ガンホーのゲーム'),
('パンヤ','ゲームポットのゲーム'),
('トリックスター','ジークレストのゲーム');
('ラグナロク','ガンホーのゲーム'),
('パンヤ','ゲームポットのゲーム'),
('トリックスター','ジークレストのゲーム');
実行結果

character_setを変更したことによって今度はERROR 1366がでません.
INSERT文を入力してコマンドプロンプト上から日本語を入力することができました.
ちなみにcharacter_setがすべてutf8の場合,Mysqlに既に日本語が入っている状態からSELECT文を流すと文字化けしました.こちらもcharacter_setを変えることでコマンドプロンプト上で全角文字が文字化けしなくなりました.
私はこれで使えるからいいやって感じで使ってみました.
あとは自己責任で!
![]() | Head First SQL 頭とからだで覚えるSQLの基本 (2008/06/09) Lynn Beighley 商品詳細を見る |
- 2008-03-08-14:00 初めてのMysqlと文字化け
- カテゴリ : mysql
-

- コメント : 4
- トラックバック : 1
4件のコメント
[C286] 文字コード
- 2008-12-28
- 編集
[C287]
>>クマ吉さん
コメントありがとうございます.
文字化け大変ですよね.
ぷぎえもんも独学でなんとかやっています.
phpだとmysqlと接続してからSET NAMESでエンコードの種類を指定してあげればたいていOKな気がします.
$connをコネクションとして
mysql_query("SET NAMES utf8",$conn);
とか
$conn -> query("SET NAMES utf8;");
UTF8で設定する例だとこんな感じでしょうか.
これのおかげ最近は文字化けをあまりしなくなりました.
コメントありがとうございます.
文字化け大変ですよね.
ぷぎえもんも独学でなんとかやっています.
phpだとmysqlと接続してからSET NAMESでエンコードの種類を指定してあげればたいていOKな気がします.
$connをコネクションとして
mysql_query("SET NAMES utf8",$conn);
とか
$conn -> query("SET NAMES utf8;");
UTF8で設定する例だとこんな感じでしょうか.
これのおかげ最近は文字化けをあまりしなくなりました.
- 2008-12-29
- 編集
[C290] やっとスタート地点に立てた\( ̄▽ ̄ )/
おかげさまで文字化けがなくなりました。ありがとうございます。
さらにsjisしか扱えないコマンドプロンプトをやめて
XAMPPに付属していたphpMyAdminで操作したら、
insertエラーも「ソ」がバグるのも無くなりました。
挫折しかけましたがまだ頑張れそうです。
さらにsjisしか扱えないコマンドプロンプトをやめて
XAMPPに付属していたphpMyAdminで操作したら、
insertエラーも「ソ」がバグるのも無くなりました。
挫折しかけましたがまだ頑張れそうです。
- 2008-12-30
- 編集
[C291]
>>クマ吉さん
おめでとうございます.
文字化けしなったのですね.
XAMPP使ってないんですけどphpMyAdminにそんな機能があるのは知らなかったです.便利だなあ.
文字化けは一度クリアしてしまうと以降それほど問題にならなくなります.がんばってください!!
おめでとうございます.
文字化けしなったのですね.
XAMPP使ってないんですけどphpMyAdminにそんな機能があるのは知らなかったです.便利だなあ.
文字化けは一度クリアしてしまうと以降それほど問題にならなくなります.がんばってください!!
- 2008-12-31
- 編集
コメントの投稿
1件のトラックバック
[T12] mysqlにゴンゾをinsertする
コマンドプロンプト上でmysqlにinsert文を流していたらあるところで止まってしまいました.
原因を調べているとカタカタの『ソ』が最後にある...
- 2008-08-08
- 発信元 : ぷぎえもん日記
- トラックバックURL
- http://pugiemonn.blog6.fc2.com/tb.php/727-123d6e12
- この記事に対してトラックバックを送信する(FC2ブログユーザー)





ぷぎえもんさんと同じようにエラー1366が出ました。
ぐぐっても対処法が見つからないんじゃなくて、
対処法が多すぎて読んでたらもう夜中の3時。
早くも独学の壁を感じています。
なんで最初から1文字=4バイトにしておかなかったんだヽ(`Д´)ノ