
先日した質問の仕方が悪かったようなので、再度質問させていただきます。
アルファベット以外の文字を書き込んで実行ボタンを押すと(下の例だと、Aの後ろに「様」といれてます。)、実行された SQL クエリーには「様」が表示されず、結果「N」や「?」というレコードが残ってしまいます。
あと、下記のメッセージが出てくる時もあります。
もしわかる方がいらっしゃれば教えて頂ければ幸いです。
コードの問題かと思い、php.iniやmy.iniで設定を行っているつもりなのですが、うまくいきません。
下記メッセージと設定内容
Warning: mb_strpos(): Unknown encoding or conversion error. in C:\apachefriends\xampp\phpmyadmin\libraries\string.lib.php on line 100
Warning: mb_strpos(): Unknown encoding or conversion error. in C:\apachefriends\xampp\phpmyadmin\libraries\string.lib.php on line 100
Warning: mb_strpos(): Unknown encoding or conversion error. in C:\apachefriends\xampp\phpmyadmin\libraries\string.lib.php on line 100
実行された SQL クエリー:
INSERT INTO member( email, keitai, name, futan ) VALUES( 'ggg@ggg.com', 0, 'A', 100 )
設定内容は、
my.ini
[client]
default-character-set=ujis
local-infile=1
[mysqld]
default-character-set=ujis
local-infile=1
set-variable=lower_case_table_names=0
php.ini
default_carset="EUC-JP"
[mbstring]
mbstring.language=Japanese
.internal_encoding=EUC-JP
.http_input=auto
.http_output=EUC-JP
.encoding_translation=Off
.detect_order=ASCII,SJIS,EUC-JP,JIS,UTF-8
.substitute_character=none;
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
大体何が起きているかがわかりました。
(1)MySQLバージョンを4.0でなく、4.1か5.0を使用している。
(2)phpMyAdminのトップページの
MySQL 接続照会順序が、"utf8_general_ci"
になっている。
もしgoohajimete様の実行環境が、
上記に当てはまりましたら、おそらくこういうことです。↓
MySQL4.1以降からは、データベース、テーブル単位で、文字コードが設定できるようになりました。しかも問い合わせ時に文字コードを自動変換してくれるという機能がつきました。
phpは、my.iniを読み込みませんので、my.iniで設定された文字コードは無視されます。
では、どの文字コードがベースになるかというと、本家MySQLABのサイトからダウンロードできる4.1のWindows版は、文字コード=laten1でコンパイルされているため、なんと、laten1がベースになります。
ご指摘のINSERT文を入力すると、なぜか、Mysqlは、UTF-8(またはlaten1?)と判断し、これをEUC-JPに変換しようとします。
入力文字 → UTF-8 → EUC-JP
こうして、日本語が破壊されます。
では、結論として、どうやったら良いかというと、
INSERT文の前に、
SET NAMES ujis;
と入力し、つづけてSQL文をいれます。(;セミコロンを忘れずに。。。)
たとえば、
SET NAMES ujis;INSERT INTO member( email, keitai, name, futan ) VALUES( 'ggg@ggg.com', 0, 'A', 100 );
というように。。。
(基本的に、われわれ日本人が、MySQL4.1以降を使用する時は、このSET NAMES ××× が付きまとうことになりそうです。
ただ、文字コードはEUC_JPしか使わず、
4.1のサブクエリなどの新機能を我慢できるのでありましたら、MySQL4.0系がもっとも安定しておりますので、
こちらをお使いになってもいかがとは思います。
ネット上の情報から察するに、
MySQL4.1では、かなり皆さん苦労されているようですので。。。
この回答への補足
copymaster様
詳しいご説明大変有難うございます。
また返事が送れて大変失礼しております。
バージョンを確認するだけで手間がかかっていたのですが、
お察しの通り、
phpMyAdmin 2.6.0-pl3
MySQL 4.1.8
というバージョンでした。
ただ、ご指摘のように下記のように対応しましたが、
やはりうまくいきませんでした。
SET NAMES ujis;INSERT INTO member( email, keitai, name, futan ) VALUES( 'ggg@ggg.com', 0, 'A様', 100 );
で実行してもやはり、実行してもらえず、(漢字部分の「様」が抜けて実行されしてしまいます。(下記のように)
SET NAMES ujis;INSERT INTO member( email, keitai, name, futan ) VALUES( 'ggg@ggg.com', 0, 'A', 100 );
やはりバージョンを4.0にするしかないのでしょうか。
遅れた手前再度質問するのも恐縮なのですが、お時間のある時にでも教えていただけると幸いです。
No.2
- 回答日時:
Warning:が出なくなったところで、
半分解決ですね。
環境をまだお聞きして
いなかったので、ご確認です。
(1)使用しているOSは?WindowsそれともLinux?
(2)PHP、MySQLのそれぞれのバージョンは?
(3)SQLを実行している場所は?
たとえばphpMyAdminを使ってweb画面上から
実行しているのでしょうか。
もし、phpMyAdminの場合、
config.inc.phpの、言語設定が、
$cfg['DefaultLang'] = 'en-iso-8859-1';
ではなく、
$cfg['DefaultLang'] = 'ja';
になっていますでしょうか?
この回答への補足
ご質問大変有難うございます。
下記に補足いたします。
(1)windows
(2)phpMyAdminでweb上より
(3)'ja'に変更してます。最初はen-iso-8859-1だったので、変更ましたが、依然漢字が表示されない状態です。
何かわかりましたら教えて頂けると幸いです。
No.1
- 回答日時:
php.iniの、
mbstring.encoding_translation = On
でどうでしょうか?
この回答への補足
早々のご回答ありがとうございます。
しかし残念ながら、上記のように設定してみましたがうまくいかず、同様の結果になってしまいました。
(ただ、今回はエラーメッセージは出ず、
「実行された SQL クエリー:
INSERT INTO member( email, keitai, name, futan ) VALUES( 'xxx@ccc.com', 0, 'A', 100 )」
と表示されます。
(Aのあとに様という漢字をつけて実行してはいますが、実行ボタンを押すとやはり様の字が抜けてしまいます。)
何か他に考えられる原因はありますでしょうか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
OS400/DB2のデータをWebで表示...
-
Excel 2010の文字化け
-
複数の文字コードの混在
-
数字で「そ」と「り」
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
PL/SQLをWindowsのBATファイル...
-
create databaseがうまくいきま...
-
sql*loader 数値のロード
-
MYSQL で検索した結果を印刷したい
-
mysqlにおけるホストのパーセン...
-
複数行をINSERTで『ORA-00911: ...
-
mySQLのデータベースにhtmlのコ...
-
MySQLで連続csvファイルを読み...
-
弥生販売のデータベースをネッ...
-
どの程度のデータベースなら、c...
-
ODBC登録の権限について
-
あるDBから別のDBのテーブルをs...
-
access VBAを勉強中です。DA...
-
同じSQL文で極端に検索が遅くな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数字で「そ」と「り」
-
phpMyAdminにおいて閲覧した時...
-
【至急】データベースの文字化...
-
既存のシステムを後からUnicode...
-
複数の文字コードの混在
-
日本語の文字化け
-
PHPサイトで、PCサイトか...
-
UTF-8で携帯対応するには?
-
漢字や平仮名の文字をSQLで実行...
-
PHP+MYSQLでの文字コードによる...
-
phpMyAdminのみで文字化けする...
-
mysqlのデータベースの文字コー...
-
PHPadmin文字化けに関しまして
-
MySQL4.0 UTF-8 での文字化け
-
MySQL 4.0と4.1での互換性の問題
-
PHPとMySQLで文字化けしてしま...
-
機種依存文字
-
phpMyAdmin、インポートで全角...
-
MySQLデータ表示dreamweaverで...
-
OS400/DB2のデータをWebで表示...
おすすめ情報