[PHP-users 31670] Re: MySQLでのエラーと文字化け

YuGo yu.gotou @ gtec-ni.com
2007年 3月 12日 (月) 18:22:29 JST


Napura どの。
syntax errorのところはよくわかりませんが、文字エンコーディングについて言
います。
下のsql文を発行した結果を見てください。
SHOW VARIABLES LIKE 'character%' ;
character_set_clientとcharacter_set_serverが異なる場合、mysqlの自動文字
コード変換が働きます。
character_set_clientがPHPでINSERTしようとしているエンコーディングと異な
る場合。たとえばEUC-JPを入れようとしている場合。
SET NAMES ujis ;SHOW VARIABLES LIKE 'character%' ;
これでcharacter_set_clientがujisに変わるはずです。
運用上はsql文を発行する前に呪文のようにSET NAMES キャラクタセット名 ;を
入れるでどうでしょう。


おまけ
SELECT version( ) ;を発行して、mysqlのバージョンを確認しておいたほうがい
いですよ。




> お世話になります。Napuraと申します。
> 
> PHP+MySQLを利用しておりましてプログラムを
> 行っています。
> 文字化けで行き詰まって居ります。
> 
> insert***** values($Sno,'$v_no','$b_no','$p_name','$p_items','$SubX')";
> として、実行すると
> You have an error in your SQL syntax; check the manual that corresponds to your MySQL 
> server version for the right syntax to use near '不凍リシン','2007-03-12 9:39:53')' at line 1
> 
> insert***** values($Sno,'$v_no','$b_no',CONVERT('$p_name' USING utf8),CONVERT('$p_items' USING utf8),'$SubX')";
> でも
> You have an error in your SQL syntax; check the manual that corresponds to your MySQL
>  server version for the right syntax to use near '不凍リシン' USING utf8),'2007-03-12 9:50:50')' at line 1
> 
> insert***** values($Sno,'$v_no','$b_no','`$p_name`','`$p_items`','$SubX')";
> と’` `’のように``でくくるとエラーなしで記録は出来ますが
> データを照合すると文字化けして
> ソルシオン=>ャ泣Vオン
> 高機能無機質=>高機薄ウ機質
> 
> のようになっています。
> 
> 何か対策はあるのでしょうか?
> 
> サーバーのPHPは4で
> MySQLも4.1.0以降と思います。
> ディフォルトでUTF-8と聞いています。
> 詳細は聞いていません。
> 
> よろしくお願いいたします。
> 
> 
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> PHP-users mailing list  PHP-users @ php.gr.jp
> http://ml.php.gr.jp/mailman/listinfo/php-users
> PHP初心者のためのページ - 質問する前にはこちらをお読みください
> http://www.php.gr.jp/php/novice.php3


PHP-users メーリングリストの案内