
my.iniとSET NAMES SJIS
について教えていただきたいことがあります。
my.iniに以下設定を追加で行いました。
[mysqld]
character-set-server=utf8
[mysqldump]
default-character-set = utf8
[mysql]
default-character-set = utf8
データベースのAテーブルには、
No 商品 価格
1 冷蔵庫 1000
2 エアコン 800
というレコードが入っております。
コマンドプロンプトより、
1. cd C:\xampp\mysql\bin
2. mysql -u root -pnazonazo
の二つのコマンドを実行後、
mysql> Select * from A;
を実行したところ、日本語の商品列が文字化けしました。
No 商品 価格
1 文字化け 1000
2 文字化け 800
そこで、色々調べて
1. mysql> SET NAMES SJIS;
2. mysql> Select * from A;
を実行したところ商品名の文字化けが直って表示されました。
No 商品 価格
1 冷蔵庫 1000
2 エアコン 800
質問1:SET NAMES SJIS;により、コマンドプロンプトでの文字化け原因が
解消されたと思うのですが、なぜだか理由が分からないのです。
「my.ini」とどのような関係があるのでしょうか。
情報を見つけたページでは、おまじないということで書かれていたのですが
解決された理由を知りたいのです。
質問2:PHPでも、SET NAMES SJIS; を使用するときがあるみたいなのですが
同じ効果があるのでしょうか。
どなたかお分かりのかたがいらっしゃいましたら
ご教授お願いします。
No.1ベストアンサー
- 回答日時:
my.ini の設定は、[mysqld]セクションは、defaultでは、utf-8 の文字コードで格納するという意味。
tableやカラムごとに文字コードの変更も出来るけど、いちいち指定しないときは、server設定が使われる[mysql]セクションは、コマンドラインクライアントのmysqlで使用する文字コードの指定。
しかし、windows のコマンドプロンプトは、shift_jis を使っており、shift_jis以外の文字は、化けるし、MySQLへデータを送りつけるときもshift_jisなので、そのままだと、MySQL側で、utf-8ではない異常なコードと認識されて ?文字にされてしまう。
そこで、
SET NAMES SJIS;
「コマンドプロンプトから送付するデータはshift_jisだよ適宜変換して格納してね、また、こっちへ返すデータはshift_jisに変換しておいてね」という命令になる。
windows 用なら、my.ini の[mysql] の部分は、常にコマンドプロンプト用なので、以下のように書き換えておくと、MySQLサーバーへアクセスするたびに、SET NAMES SJIS; を打たなくても済むようになる。
[mysql]
default-character-set = sjis
>質問2:PHPでも、SET NAMES SJIS; を使用する
同じです。phpのソースファイルがshift_jisで保存されているなら、必要です。
でも、shift_jisでプログラムを保存するともっとややこやしい問題が発生するので、utf-8でファイル保存するのがベストでしょう。
それでも、windows版phpだと、 set names utf8; の発行が必要だったりしますけど。
参考 MySQL 多バイト文字問題
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ# …
ご丁寧に解説頂きありがとうございます。
的確にお答え頂き、かなり理解できました。
大変参考になりました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- MySQL 参考書に従って入力したつもりでしたが、最後はエラーがでました。 1 2022/09/28 03:45
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) VBAでのMATCH関数 3 2022/10/17 19:06
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
小泉純一郎は文字化けしないが...
-
MySQL コマンド上の文字化けを...
-
MySQLカラム名は日本語と英数字...
-
SQL Server のキャラクターセッ...
-
日本語のデータがインポートで...
-
MySQLの.sqlファイルを実...
-
TYPE=Inoodbが指定するとワーニ...
-
SQLのVARCHARとVARCHAR2の違い
-
MySQLのユーザー設定について
-
データベースのサンプルの追加...
-
さくらインターネットのMySQL ...
-
全権限をもつユーザの追加方法
-
phpMyadminと文字コード
-
ODP.NETのバージョン確認
-
インポートできない。
-
Usage: \\.<filename> | sourc...
-
(統計量の)分散を算出したい
-
MySQL5.0.11のインストールでco...
-
phpMyAdmin最新版で文字化け
-
削除した件数を取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLカラム名は日本語と英数字...
-
日本語のデータがインポートで...
-
文字コードMS932(Windows-31J...
-
存在しているファイルがロード...
-
SQLで日本語データを入力したい...
-
SQL Server のキャラクターセッ...
-
MySQLの日本語LIKE検索について
-
my sqlで文字化け
-
mysqlのカラムaaaに、英文があ...
-
MySQL 日本語表示 日本語入力...
-
MySQL 文字化けについて
-
MySQLの文字コードについて
-
mysqlがインストールされている...
-
副問合せにLIKE文を使う方法は...
-
ODP.NETのバージョン確認
-
エクセルで連勤チェックをした...
-
like句を使って日本語を検索す...
-
VBAで変数内に保持された二次配...
-
SQLのVARCHARとVARCHAR2の違い
-
列数が多いと結果が行単位に改...
おすすめ情報