PHPを使って物を作っているときに問題が発生しました。これは単純に文字化けの問題が原因である可能性がありますが、この問題は関数自体が原因ではありません。犯人が誰なのか調べてみましょう。 容疑者:base64_encodeとbase64_decode 罪状: プロンプト情報を受け取って指定ページにジャンプするジャンプ関数とプロンプト関数を書いたのですが、ジャンププロンプト中に漢字が文字化けしてしまいました。 ジャンプテンプレートのコードは次のとおりです: コードをコピーします コードは次のとおりです: プロンプトにジャンプ <br> *{ パディング: 0; マージン: 0; body{ 背景: #fff; フォントファミリー: 'Microsoft Yahei'; フォントサイズ: 16px; .system-message{ 幅:600px; マージン:150px 自動 0 自動; 背景:#f8f8f8; ボーダー:1px ソリッド #ccc;-webkit-border-radius: 8px;-moz-border-radius: 8px;-webkit-box-shadow: #666 0px 0px 10px;-moz-box-shadow: #666 0px 0px 10px;box-shadow: #666 0px 0px 10px;}<br> .system-message h1{ font-size:30px; font-weight:normal; 行の高さ:100px; } .system-message .jump{ パディング: 40px 0;}<br> .system-message .jump a{ color: #333;}<br> .system-message .success,.system-message .error{ 高さ:60px; フォントサイズ:18px; }<br> .system-message .detail{ フォントサイズ: 12px; 行の高さ: 20px; 表示: なし}<br> </スタイル><br> </head><br> <br> <div class="システムメッセージ"><br> <?php if( $_GET['success'] ){?><br> <h1>:) おめでとうございます! </h1><br> <p class="success"><?php echo base64_decode($_GET['message']) ?></p><br> <p class="error"><?php echo base64_decode($_GET['message']) ?></p><br> <p class="jump">システムは <b id="wait"><?php echo $_GET['time'] ?></b> の後にジャンプします。 <a id="href" href="<?php echobase64_decode($_GET['url']); ?>">ここをクリックしてジャンプ</a></p><br> <br> </div><br> <スクリプトタイプ="text/javascript"><br> (関数(){<br> var wait = document.getElementById('wait'),href = document.getElementById('href').href;<br> var 間隔 = setInterval(function(){<br> var time = --wait.innerHTML;<br> if(時間 location.href = href;<br> clearInterval(間隔);<br> };<br> }, 1000);<br> })();<br> </スクリプト><br> </body><br> </html><br> <br><br> <br>PHP リダイレクト関数は次のように定義されます: <br> <br><br><br> </h1> </div>コードをコピーします<p> コードは次のとおりです:</p> <p></p> <div class="codetitle"> /* リマインダー後にジャンプ */<span> function _alert( $success=true, $message='success', $time='3', $url='/'){<u> header('Location:/include/redirect.php?success='.$success.'&message='.base64_encode($message).'&time='.$time.'&url='.base64_encode($url)); </u> 終了します;</span> }</div> <div class="code" id="code90314"> <br> PHP で次のように関数を呼び出すと: <br> <br><br><br>コードをコピーします<br> </div> コードは次のとおりです:<br><br><div class="codetitle"> $query = "コンテンツの更新セット bid='$clean[bid]',title='$clean[title]',content='$clean[content]',path='$clean[path]' where id= .$clean['id'];<span> if( mysql_query($query) ){<u> _alert(1,'変更成功',3,'/admin/manage.php');</u> }その他{</span> _alert(false,'変更に失敗しました'.mysql_error(),5,'/admin/manage.php');</div> }<div class="code" id="code68288"> <br> <p>「変更成功」または「変更失敗」の漢字が文字化けしていることがわかります。 </p> <p>なぜですか? </p> <p>base64_encodeで暗号化した後、GETの形で他のページに送信される場合がありますが、base64_decodeで復号すると文字化けが発生します。 </p> <p>この問題に遭遇したとき、一部のものは正しく復号化できるのに、一部のものは文字化けするのはなぜだろうと疑問に思いました</p> <p>後で確認したところ、GETフォームで渡すと+記号がスペースに置き換えられてしまうようです。 </p> <p>コード化けを防ぐために、置換の手順を実行してから復号化しました。案の定、コード化けの問題はなくなりました。 </p>問題は非常に簡単です。あと 1 ステップ書くだけです<p> </p> <p></p> <div class="codetitle"><span>コードをコピーします<u></u> コードは次のとおりです:</span></div> <div class="code" id="code7809"> $str =base64_decode(str_replace(" ","+",$_GET['str']));<br> <br> </div> 記事は冒頭で間違った容疑者を特定し、これら 2 つの機能を不当に非難していたことが判明しました。 。 。 <p> </p>こちらの記事も参照してください: PHP セキュア URL 文字列の Base64 エンコードとデコード<p> </p> <p align="left"></p> <div style="display:none;">http://www.bkjia.com/PHPjc/825406.html<span id="url" itemprop="url"></span>www.bkjia.com<span id="indexUrl" itemprop="indexUrl"></span>true<span id="isOriginal" itemprop="isOriginal"></span>http://www.bkjia.com/PHPjc/825406.html<span id="isBasedOnUrl" itemprop="isBasedOnUrl"></span>技術記事<span id="genre" itemprop="genre"></span> PHPで何かを作っているときに、単純に文字化けと考えられる問題を発見しましたが、この問題は関数自体が原因ではありません。犯人が誰なのか調べてみましょう。 容疑者:...<span id="description" itemprop="description"></span> </div> </div> <div class="art_confoot"></div>