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コンテナをデプロイする方法

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

推薦する

Nacos で MySQL8 を設定する方法

1. MySQLデータベースnacos_configを作成する2. データベース nacos_con...

mysql-5.7.21-winx64 無料インストール版のインストール - Windows チュートリアル詳細説明

1 ダウンロードアドレスは https://dev.mysql.com/downloads/mysq...

IE6 スペースバグ修正方法

コードを見てみましょう:コードをコピーコードは次のとおりです。 < !DOCTYPE html...

div+cssとウェブ標準ページの利点

div 要素は、HTML ドキュメント内のブロックレベル コンテンツの構造と背景を提供するために使用...

MySQL における EXISTS と IN の使用法の比較

1. 使用法: (1)EXISTSの使用 ucsc_project_batch a から、存在する場...

Alibaba CloudにMySQLをインストールする方法の詳細な説明

軽量のオープンソース データベースである MySQL は、エンタープライズ レベルのアプリケーション...

LinuxにMySQLデータベース5.6のソースコードをインストールし、ログインユーザーのパスワードを変更する

この記事では、主に Linux で MYSQL データベースをインストールする方法について説明し、M...

SQL文でのgroup byの使用について簡単に説明します

1. 概要Group by は、by の後の規則に従ってデータをグループ化することを意味します。いわ...

Linux サーバーは最大いくつのポートを開くことができますか?

目次ポート関連の概念:ポートとサービスの関係1: nmapツールが開いているポートを検出する2: n...

Win10 での MySQL 8.0 ログインでユーザー 'root'@'localhost' のアクセスが拒否される (パスワード使用: YES) 問題の解決方法

最近、MySQL を学び始めました。インストールはスムーズに進み、インターネット上の既成のチュートリ...

Centos7.3は起動時に自動的に起動または指定されたコマンドを実行します

Centos7では、/etc/rc.d/rc.localファイルの権限が削減されており、実行権限があ...

MySQLクエリ文の実行プロセスの詳細な説明

目次1. クライアントとサーバー間の通信方法2. クエリキャッシュ3. クエリ最適化処理4. クエリ...

JS を使用して Web ページのウォーターフォール レイアウトを実装する方法

目次序文:ウォーターフォールレイアウトとは何ですか?達成方法: 1. 画像を取得する2. 画像の帯域...

js での遅延読み込みとプリロードの具体的な使用法

遅延読み込み(レイジー読み込み)とプリロードは、Web 最適化によく使用される手段です。 。 1. ...

Chromeブラウザの自動パスワード保存プロンプト機能を無効にする方法

注: Web 開発では、フォームに autocomplete="off" を追加...