質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

4回答

4795閲覧

mysql5.1で文字コードをutf8に設定する方法

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

0クリップ

投稿2015/01/13 03:24

失礼します。

windows8.1でmysql5.1を使用しています。

現在、mysqlでutf8の設定ができずに困っています。
症状としては、
・データベース作成時点でutf8を指定、set names utf8を実行した状態で
insert文で日本語を含むデータを入れようとしたところ、日本語のデータを追加しようとしたカラムのみエラーが出る。
・chcp 65001を指定した状態でmysqlを起動(?実行?)してinsert文でデータを追加しようとしたところ、
そもそも日本語入力ができない。
・mysqlを起動(?実行?)しない状態でchcpコマンドを実行すると932(たぶんsjis)と表示される。
・my.cnfが存在しない

以上の4点となります。

3つ目の症状より、デフォルトの文字コードがsjisになっているのではないかと考えているので、my.cnfの設定を変更しようと思ったのですが、cドライブからmy.cnfを検索しても出てこないのでおそらく存在しません。
調べてみたところどうやら自分で作ればいいらしいのですが、mysql5.1のサンプルコードが見つからなかったのもあり、どこに作ればいいのか、記述はどうしたらいいのかが分からず困っています。

utf8の設定をすることができないので、この状況を打開するためにまずmy.cnfを作るところから始めるとは思うのですが、どこにどう作ったらよいでしょうか?

適応されているかの確認です。

lang

1mysql> show variables like 'char%'; 2+--------------------------+---------------------------------------------------------------+ 3| Variable_name | Value | 4+--------------------------+---------------------------------------------------------------+ 5| character_set_client | utf8 | 6| character_set_connection | utf8 | 7| character_set_database | utf8 | 8| character_set_filesystem | binary | 9| character_set_results | utf8 | 10| character_set_server | utf8 | 11| character_set_system | utf8 | 12| character_sets_dir | C:\Program Files (x86)\MySQL\MySQL Server 5.1\share\charsets\ | 13+--------------------------+---------------------------------------------------------------+ 148 rows in set (0.00 sec)

続いてはinsert文で日本語のデータを入れようとした結果です。

lang

1mysql> insert into goods values 2 -> (1,'りんご',200),(2,'みかん',100); 3ERROR 1366 (HY000): Incorrect string value: '\x82\xE8\x82\xF1\x82\xB2' for column 'name' at row 1

my.iniを編集する前も全く同じエラーになっていました。

phpでinsert文も試しましたが、utf8をset namesで指定すると文字化け、sjisだと日本語で表示されました。

my.iniはMySQL Server 5.1の直下にあります。

使用しているエディタはSublime Textで、上書き保存をするときに「エンコードを指定して上書き保存」でUTF-8を選択して保存しています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

確認結果を追記いただきありがとうございます。
追記いただいた結果からすると、SJISでINSERTしに行っているようです。

mysql> insert into goods values
-> (1,'りんご',200),(2,'みかん',100);
ERROR 1366 (HY000): Incorrect string value: '\x82\xE8\x82\xF1\x82\xB2' for column 'name' at row 1

→ ”りんご”をSJISでURLエンコードすると "%82%E8%82%F1%82%B2" となりますので、'\x82\xE8\x82\xF1\x82\xB2' はSJISかと、、、

最近はメモ帳でもUTF-8で保存できますので、PHPのファイルをメモ帳で作成(UTF-8で保存)して実行してみてください。
あと、PHPの文字コードの設定もUTF-8にしてください。
[参考]PHPスクリプトが文字化けするとき | PHPプログラミングの教科書 [php1st.com]

投稿2015/01/16 04:31

harmar229

総合スコア55

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Sublime Textで、エンコードをUTF-8にし、保存されているとのことですが、
エンコードに関しては、Sublime Textはあまり信用できないところがあるかと思われますので(他の機能は素晴らしいですが)
ファイルのエンコードを指定されるのでしたら、秀丸などのテキストエディタで指定されることを
オススメします。

※Sublime Textのデフォルト設定のままならば、そもそもUTF-8なのでファイルのエンコードに関しては問題ないかと思われますが。

投稿2015/01/15 09:00

Yousuck

総合スコア349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

以下のSQLでデフォルトの文字コードの設定を確認してみてはいかがでしょうか。
[参考]mike、mikeなるままに…: MySQLのUTF-8で文字化けにハマった

lang

1show variables like 'char%';

以下のように出力されれば、UTF-8の設定となっているようです。

lang

1mysql> show variables like 'char%'; 2------------------------------------------------------ 3| **Variable_name** | **Value** | 4------------------------------------------------------ 5| character_set_client | utf8 | 6------------------------------------------------------ 7| character_set_connection | utf8 | 8------------------------------------------------------ 9| character_set_database | utf8 | 10------------------------------------------------------ 11| character_set_filesystem | binary | 12------------------------------------------------------ 13| character_set_results | utf8 | 14------------------------------------------------------ 15| character_set_server | utf8 | 16------------------------------------------------------ 17| character_set_system | utf8 | 18------------------------------------------------------ 19| character_sets_dir | /hogedir/hogefile | 20------------------------------------------------------ 218 rows in set (0.00 sec)

上記が問題なければ、Cドライブ直下にmy.cnfを作成してみてください。
(Windowsの場合は、my.iniに記載してもいいようですが、、、)
[参考]MySQL :: MySQL 5.1 リファレンスマニュアル (オンラインヘルプ) :: 2.3.7 オプションファイルの作成

投稿2015/01/14 02:46

harmar229

総合スコア55

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/01/14 03:39

デフォルトの文字コードの確認をしました。 上記の通りで問題ありませんでした。 my.cnfの中身はどのようにしたらよいのでしょうか? my.iniの中のdefault-character-setは2箇所ともutf8になっています。
harmar229

2015/01/14 04:16

クライアントから日本語を含むInsert文を実行する場合は、Clientセクションを設定し MysqlコマンドでInsertする場合はMysqlセクションを設定すればいいかと、、、 ```lang-<ここに言語を入力> [client] default-character-set=utf8 [mysql] default-character-set=utf8 ``` ってか、WindowsではMysqlサーバとして使ったことないので、確認できませんが PHPからInsertするなど他の方法でも同じ問題が出るか確認してみてはいかがでしょうか。 (PHPファイルの文字コードをUTF-8で保存する必要がありますが、、、)
guest

0

Windowsの場合、ファイル名がmy.iniとなっていることもあるようです(Windows7+MySQL5.5のmy.ini在り処)。

投稿2015/01/13 04:56

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/01/13 05:04

my.iniは確かにあります。 情報が足りてなくて申し訳ないのですが、windows8.1でmysql5.1を使用しています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問