![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
先日した質問の仕方が悪かったようなので、再度質問させていただきます。
アルファベット以外の文字を書き込んで実行ボタンを押すと(下の例だと、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で質問しましょう!
似たような質問が見つかりました
- PHP PostgreSQLからCSV形式でエクスポートする際にカラム内の改行をとる方法 1 2023/02/22 10:05
- PHP php エラー 2 2022/10/23 16:43
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- MySQL Mac です。ローカルホストの phpMyAdmin にアクセスできません。 1 2023/06/06 17:14
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
数字で「そ」と「り」
-
phpMyAdmin、インポートで全角...
-
ネットで文字化けすのはどうい...
-
データベースファイル(.db)を開...
-
sql*loader 数値のロード
-
PL/SQLで@ファイル名が反応しま...
-
PL/SQLをWindowsのBATファイル...
-
同じSQL文で極端に検索が遅くな...
-
mysqlにおけるホストのパーセン...
-
CSVを1行しかインポートしない...
-
Amazon.comの「MARC」データベ...
-
メンテナンスプランについて
-
SQLServerのselect文でデータ数...
-
あるDBから別のDBのテーブルをs...
-
create databaseがうまくいきま...
-
エラーメッセージ:「要求され...
-
人口の都道府県別の割合を求め...
-
accdbファイルの最適化
-
phpMyAdminのテーブルにビック...
-
mySQLのデータベースにhtmlのコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
数字で「そ」と「り」
-
漢字や平仮名の文字をSQLで実行...
-
特定の文字(“ソフ”)だけが文...
-
phpMyAdmin、インポートで全角...
-
OS400/DB2のデータをWebで表示...
-
CoreserverでMySQLが文字化けし...
-
複数の文字コードの混在
-
MySQLデータ表示dreamweaverで...
-
サーバデータのエクスポートで...
-
文字化けが直らなくて困ってま...
-
ネットで文字化けすのはどうい...
-
データベースファイル(.db)を開...
-
PL/SQLで@ファイル名が反応しま...
-
sql*loader 数値のロード
-
あるDBから別のDBのテーブルをs...
-
PL/SQLをWindowsのBATファイル...
-
mysqlにおけるホストのパーセン...
-
同じSQL文で極端に検索が遅くな...
-
SQLです。あってますか?↓
-
mySQLのデータベースにhtmlのコ...
おすすめ情報