ホームページ > バックエンド開発 > PHPチュートリアル > jquery ajaxで文字化けした中国語が配信される

jquery ajaxで文字化けした中国語が配信される

WBOY
リリース: 2016-06-13 13:24:18
オリジナル
990 人が閲覧しました

jquery ajaxで漢字を送信すると文字化けしますか?
送信ページは次の submit.htm コードです

HTML コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"><head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
<title>欢迎</title>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
...
            $.ajax({
              type:"POST",
              url: "xx/add_post.php",
              data:'aa='+escape($('#aa').val())+'&bb='+$('#bb').val(),
              success: function(html){ alert('添加成功!'); }
            });     
....
<html>

ログイン後にコピー

受信データ ページは add_post.php
PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
<?php
                    header("Content-Type:text/html;charset=utf-8"); 
                    date_default_timezone_set("PRC"); 

                    try{
                        $pdo=new PDO("mysql:host=localhost;dbname=acom", "root", "abcdefghi");
    }catch(PDOException $e){
                        echo $e->getMessage();
    }

    $stmt=$pdo->prepare("insert into acom_a(aa, bb) values(:aa, :bb)"); 
         $stmt->execute(array(":aa"=>$_POST["aa"], ":bb"=>$_POST["bb"]));
?>

ログイン後にコピー


中国語ではaaフィールドが文字化けしますが、英語ではbbフィールドは正常です。

-----解決策--------------------------------
add_post.phpファイル挿入を別途実行 中国語が文字化けしてませんか?
------解決策---------
encodeURI($('#bb').val ()); このように、漢字を含む可能性のあるすべての変数は encodeURI になります。
------解決策---------
話し合う

引用:
あなたにはまだ Ajax をデバッグするツールも能力もないようだということを突然思い出しました
$pdo=new PDO("mysql:host=localhost;dbname=acom", "root" , "abcdefghi",array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8"));

友人、あなたの PDO 設定で問題は解決しました、ありがとう!
また質問してください...

------解決策---------
話し合う

構成ファイルの変更を完了し、ステートメントを実行しないようにする方法はありますか?

------解決策------------------
問題は解決しました!

PDO のインスタンス化時に追加されるパラメーター array(PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8")
は、mysql の結果を接続した後、直ちに set names utf8 コマンドを実行することを意味します。 mysql データベースは独立していて公開されているため、通信用は utf-8

に設定されます。そのため、必要なパラメータに従ってのみインストールされる可能性は低いです
そのため、使用する場合は文字セットを宣言する必要があります

MysqlはPDO用にカスタマイズされたものです。文字セットを宣言するには、dsn で oralce が宣言されている場合、
を実行する必要があります。
関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート