[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 メーリングリストの案内