ホームページ > ウェブフロントエンド > フロントエンドQ&A > html html 渡された値が文字化けするコード

html html 渡された値が文字化けするコード

WBOY
リリース: 2023-05-15 15:49:39
オリジナル
609 人が閲覧しました

Web 開発では、異なる Web ページ間でデータを渡す必要がある場合がありますが、このときは HTML を使用して値を渡すことができます。 HTML値の転送は一般的な方法ですが、使用中に文字化けなどの問題が発生する場合もあります。

HTML で値を渡す一般的な方法には、URL パラメーターの受け渡し、フォームの送信、Cookie およびセッションが含まれます。その中で、URL パラメーターの受け渡しとフォームの送信が最も一般的に使用される方法です。 URL パラメータの受け渡しとは、URL を介して異なるページ間でデータを転送することです。たとえば、次のコードを使用してページでパラメータを渡すことができます:

<a href="target.html?name=张三&age=20">传递参数</a>
ログイン後にコピー

ターゲット ページでは、JavaScript を通じてパラメータ値を取得できます:

<script>
    var name = getQueryString("name");
    var age = getQueryString("age");
    function getQueryString(name){
        var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if(r!=null)return  unescape(r[2]); return null;
    }
</script>
ログイン後にコピー

上記のコードでは、 JavaScriptを使用しています。パラメータ値の取得には正規表現メソッドを使用し、文字化けのデコードにはunescape()メソッドを使用します。

しかし、実際の開発では、未解決の文字化けコードの問題が発生する可能性があります。現時点では、解決策を考える必要があります。

まず、文字化けを避けるためにパラメータ値をエンコードしてみます。一般的なエンコード方式には、URL エンコードと Base64 エンコードの 2 つがあります。

URL エンコードでは、すべての特殊文字が %xx 形式のエンコードに変換されます。「%xx」は、文字の ASCII コード値を 16 進数で表現した文字列を表します。たとえば、JavaScript の encodeURIComponent() メソッドを使用してパラメータを URL エンコードできます。

<a href="target.html?name=<%=encodeURIComponent('张三')%>&age=<%=encodeURIComponent('20')%>">传递参数</a>
ログイン後にコピー

ターゲット ページでは、decodeURIComponent() メソッドを使用してデコードできます。

<script>
    var name = decodeURIComponent(getQueryString("name"));
    var age = decodeURIComponent(getQueryString("age"));
    function getQueryString(name){
        var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if(r!=null)return  unescape(r[2]); return null;
    }
</script>
ログイン後にコピー

Base64 エンコードはデータに関するもので、文字化けを避けるためにBase64に変換します。たとえば、JavaScript の btoa() メソッドを使用してパラメータを Base64 エンコードできます:

<a href="target.html?name=<%=btoa('张三')%>&age=<%=btoa('20')%>">传递参数</a>
ログイン後にコピー

ターゲット ページでは、atob() メソッドを使用してデコードできます:

<script>
    var name = atob(getQueryString("name"));
    var age = atob(getQueryString("age"));
    function getQueryString(name){
        var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if(r!=null)return  unescape(r[2]); return null;
    }
</script>
ログイン後にコピー

さらに、メタ タグを使用してページのエンコード方法を指定することもできます (例:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
ログイン後にコピー

上記は、HTML 値の送信が文字化けする問題を解決するためのいくつかの方法です。適切な方法を選択する必要があります)実際の状況に応じて。同時に、ユーザーのプライバシーの保護にも注意を払い、URL を介して機密情報を渡さないようにする必要があります。

以上がhtml html 渡された値が文字化けするコードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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