[PHP-users 31675] Re: MySQLでのエラーと文字化け
y-enomoto @ mippi-mail.com
y-enomoto @ mippi-mail.com
2007年 3月 13日 (火) 15:09:53 JST
皆様昨日はご回答ありがとうございました。
Napuraです。
> 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 キャラクタセット名 ;を
> 入れるでどうでしょう。
SHOW VARIABLES LIKE 'character%' を試してみました。
結果は
character_set_client latin1
character_set_connection latin1
character_set_database latin1
character_set_results latin1
character_set_server latin1
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
となりました。
SELECT version( ) では
4.1.2
でした。
DB接続直後に
$rtn = mysql_query("SET NAMES utf8" , $con);
を入れてみましたが
insert***** values($Sno,'$v_no','$b_no','$p_name','$p_items','$SubX')";
insert***** values($Sno,'$v_no','$b_no',CONVERT('$p_name' USING utf8),CONVERT('$p_items' USING utf8),'$SubX')";
で途中エラー
insert***** values($Sno,'$v_no','$b_no','`$p_name`','`$p_items`','$SubX')";
で
すべて文字化けとなりました。
phpの内部エンコーディングをutf8に指定しましたが
mb_internal_encoding("UTF-8");
やはりすべて文字化けします。
PHP-users メーリングリストの案内