ホームページ >バックエンド開発 >PHPチュートリアル >mysql がデータを挿入すると、漢字が x87xE7xA7x91xE7x82 に変わります。
mysql;
次のテスト パラメータはサーバー側の php ファイルで定義されており、クライアントによって送信されません。 ただし、クライアントが php に投稿して mysql を実行すると、エラーが報告されます:
不正な文字列値: 'x87xE7xA7x91xE7x82...' for columns 'typename' at row 1
投稿したデータのエンコーディングを変換します
$typename = iconv("UTF-8", "UTF-8", $typename);
トランスコーディングはありません
echo base64_encode($str);
結果を投稿します
トランスコーディングはありません
echo Base64_encode ($str);
結果を投稿
/ljLvpmaLlpofnp5Hmi6XmnInkuIDmlK/nlLHlpJrlkI3otYTmt7HkuJPlrrbjgIHkuLvmsrvljLvluIjjgIHkuLvnrqHmiqTluIjnu4TmiJDnmoQuLi4nLA0 KICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5d29yZHMgICA9J+a3seWcs+Wmh+enkSzkurrmtYEs55eb57uPLOeUn+auluWZqCzlrqvpoojnlr7nl4Us5awz5oCnLOeCjueXhyzogr/nmKQs5pu0Li4uJ y wNCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlb3RpdGxlICAgPSfmgZLnlJ/lpofnp5En
INSERT INTO dede_arctype SET id ='1002', reid ='0', topid ='0', sortrank ='0', typename ='恒生妇科', typedir ='{cmspath}/ahsfk', isdefault ='1', tempindex ='{style}/index_article.htm', templist ='{style}/list_article.htm', temparticle='{style}/article_article.htm', namerule ='{typedir}/{Y}{M}{D}/{aid}.html', namerule2 ='{typedir}/list_{tid}_{page}.html', description='恒生医院妇科拥有一支由多名资深专家、主治医师、主管护师组成的...', keywords ='深圳妇科,人流,痛经,生殖器,宫颈疾病,女性,炎症,肿瘤,更...', seotitle ='恒生妇科'データには問題ありません
INSERT INTO dede_arctype SET id ='1002', reid ='0', topid ='0', sortrank ='0', typename ='恒生妇科', typedir ='{cmspath}/ahsfk', isdefault ='1', tempindex ='{style}/index_article.htm', templist ='{style}/list_article.htm', temparticle='{style}/article_article.htm', namerule ='{typedir}/{Y}{M}{D}/{aid}.html', namerule2 ='{typedir}/list_{tid}_{page}.html', description='恒生医院妇科拥有一支由多名资深专家、主治医师、主管护师组成的...', keywords ='深圳妇科,人流,痛经,生殖器,宫颈疾病,女性,炎症,肿瘤,更...', seotitle ='恒生妇科'データには問題ありません
INSERT INTO dede_arctype SET id ='1002', reid ='0', topid ='0', sortrank ='0', typename ='恒生妇科', typedir ='{cmspath}/ahsfk', isdefault ='1', tempindex ='{style}/index_article.htm', templist ='{style}/list_article.htm', temparticle='{style}/article_article.htm', namerule ='{typedir}/{Y}{M}{D}/{aid}.html', namerule2 ='{typedir}/list_{tid}_{page}.html', description='恒生医院妇科拥有一支由多名资深专家、主治医师、主管护师组成的...', keywords ='深圳妇科,人流,痛经,生殖器,宫颈疾病,女性,炎症,肿瘤,更...', seotitle ='恒生妇科'データには問題ありません
トランスコーディングなし
echobase64_encode($str);
結果を投稿します
兄弟: データベースに挿入して表示します: å?宫 å? …è??ç?? このような文字化けは、
echo $typename; と表示される場合: u4e0du80b2u4e0du5b55'u6210u529f
これはなぜですか? ? ?
$db->Execute("SET NAMES UTF-8"); ? ?
それが問題です!
$db->Execute("SET NAMES UTF8");
mysql の utf-8 文字セットの名前は utf8 ですが、これは utf-8 ではありません
この特殊な状況は元のプログラマの間違いから生じましたが、もう修正できません
クライアントからサーバーに渡されるフォームデータの URL 文字列をエンコードするには、urlencode() を実装します
実行: urlencode() クライアントからサーバーに渡されるフォームデータの URL 文字列をエンコードします
クライアントは特定のデータを渡しません。動作条件のみを渡します
$db->Execute("SET NAMES UTF-8 ");? ? ?
それが問題です!
$db->Execute("SET NAMES UTF8");
mysql の utf-8 文字セットの名前は utf8 ですが、これは utf-8 ではありません
この特殊な状況は元のプログラマの間違いから生じましたが、もう修正できません
ありがとうございます、どうやらこれが本当に問題のようです! !