iframe ページパラメータの文字化けの問題について議論

iframe ページパラメータの文字化けの問題について議論
非常に珍しいパラメータ文字化けの問題に遭遇しました。まずページを見てみましょう

写真に示すように、月次インジケーターの下に同じラジオが 3 つあります。
3 つのラジオボタンの下に iframe があります。これにより、異なるラジオボタンをクリックすると異なるページが表示されます。
クリックすると、パラメータとともに Web ページのアドレスが渡されます。

(1)問題が発生しました。「日次インデックス」と「月次インデックス」を切り替える際に、渡したパラメータが漢字だったため、バックグラウンドで文字化けした文字として取得されてしまいました。
そこで、パラメータをエンコードし、バックグラウンドで UrlDecode を使用してデコードしましたが、文字がまだ文字化けしていることに気づき、がっかりしました。
その後、ページのエンコーディングを注意深く確認したところ、iframe で開くページにエンコーディングがないことがわかりました。
そこで次の文をページに追加します

コードをコピー
コードは次のとおりです。

<meta http-equiv="コンテンツタイプ" コンテンツ="text/html; charset=gb2312" />

現在は動作しているようで、「日次指標」と「月次指標」の Web ページを切り替えると正常に表示され、パラメータが渡されます。

(2)しかし、奇妙な問題が発生しました。ラジオを切り替えると、エラーメッセージが表示され、パラメータが文字化けしました。
今回は何が悪かったのか本当にわかりません。「日次指標」、「月次指標」、およびラジオボタンのクリックによるページ切り替えには同じ JS メソッドが使用されています。
イライラしながら、ランダムにクリックしてみたところ、次のものを見つけました。
「炭層メタン」をクリックすると、ページは正常でした。次に「石油生産」をクリックすると、パラメータが間違っていました。石油生産がすでに選択されているときに「石油生産」をクリックすると、ページは正常に表示されました。このようになってはいけません。次に、「炭層メタン」と「石油生産」を比較しました。「石油生産」モジュールの公式ページはすでに投稿しましたが、「炭層メタン」モジュールはまだ作成されていないため、Baiduページをランダムに投稿しました。質問(1)のエンコードの問題のため、まずエンコードの問題を考えました。Baiduのエンコードを以下のように確認しました。

コードをコピー
コードは次のとおりです。

<metahttp-equiv="コンテンツタイプ" コンテンツ="text/html;charset=utf-8">

エンコード形式が異なります。そこで、「石油生産」ページにも「炭層メタン」を追加し、Baidu を削除しました。
えーと、ページは正常に実行されますが、パラメータが報告されず、コードが文字化けしています。

理由を分析すると、パラメータを渡すときに取得されるのは現在の iframe 表示ページのエンコーディングであり、開くページのエンコーディングとは関係がないようです。
しかし、これは本当はそうではありません。これは iframe です。URL を割り当て、親ページの iframe にパラメータを渡します。なぜ iframe の現在のページを気にする必要があるのでしょうか?

<<:  DockerでMongoDBコンテナをデプロイする方法

>>:  ウェブデザイナーもウェブコーディングを学ぶ必要がある

推薦する

MySQL で単一のフィールド内の複数の値を分割および結合する方法

複数の値を組み合わせて表示これで、図1から図2に示す要件が揃いました。 どうやってやるんですか?次の...

行間隔が広い場合の解決策(IE では 5 ピクセル多い)

コードをコピーコードは次のとおりです。 li {幅:300px; 高さ:23px; 行の高さ:24p...

Docker+Jenkinsを使用して自動的にビルドおよびデプロイする

この記事では、Docker+Jenkins の自動ビルドデプロイメントを紹介し、皆さんと共有します。...

VueのkeepAliveコンポーネントの機能と使い方の詳細な説明

序文面接中、多くの面接官は「keep-alive が何をするのか知っていますか?」と質問する際に V...

MySQLデータベースのストアドプロシージャとトランザクションの違い

トランザクションは、複数の SQL ステートメントの原子性、つまり、それらが一緒に完了するか、一緒に...

はじめに: HTML の基本的なタグと属性の簡単な紹介

HTML はタグと属性で構成されており、これらを組み合わせてブラウザにページの表示方法を指示します。...

JavaScript の重要なブレークポイント デバッグ手法の概要 (推奨)

目次デバッガーを使用する理由は何ですか? Chromeデバッガーの基本的な使い方VS Code によ...

JSの高階関数5つを共有する

目次1. はじめに2. 再帰3. コールバック関数3.1 匿名コールバック関数3.2 パラメータ付き...

Redmine の Docker インストール手順

イメージをダウンロードします(オプションの手順です。省略した場合は、手順 3 と 4 で自動的にイン...

MySQL ログトリガー実装コード

SQL文 ドロップトリガー もし sys_menu_edit が存在します。 各行のsys_menu...

Typescriptを使用してWeChatミニプログラムを開発するための詳細な手順

Typescript の利点については詳しく説明する必要はありません。ご興味があれば、(https:...

Tomcat CentOS インストールプロセス図

Tomcat CentOS インストールこのインストール チュートリアルでは、次の内容について説明し...

Docker 入門インストールチュートリアル (初心者版)

ドクター紹介: Docker はコンテナ関連の技術です。簡単に言うと、さまざまなソフトウェアを実行で...

JavaScript における async と await の使い方とメソッド

JS の async 関数と await キーワード 関数ヘルワールド() { 「こんにちは!美しい...

Vue はフォームデータ検証のサンプルコードを実装します

el-form フォームにルールを追加します。データにルールを定義する定義されたルールをel-for...