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

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

推薦する

Vue パッケージサイズの最適化の実装 (1.72M から 94K)

1. 背景最近、独立した開発者がUIデザインを行うのを支援するために、uideaというWebサイト...

Vueはプラグインを使用して画像を比例してカットします

この記事では、プラグインを使用して画像の比例カットを実現するVueの具体的なコードを参考までに共有し...

VMware Workstation と vSphere 間で仮想マシンを移行する (画像とテキスト)

1. Workstationで仮想マシンのハードウェアバージョンを変更するWorkstation ...

Docker rocketmq デプロイメントの実装例

目次準備展開プロセスRocketMQ の初体験関連する質問ヘルプドキュメント私は最近 RocketM...

Linux 面接で最もよく聞かれる 10 の質問のまとめ

序文Linux システムの運用および保守エンジニア職の面接を受ける場合は、次の 10 個の最も一般的...

ネイティブ JavaScript 継承方法とその長所と短所の詳細な説明

目次序文プロトタイプ継承アドバンテージ欠点コンストラクタの継承アドバンテージ欠点組み合わせ継承寄生的...

HTML 挿入画像の例 (HTML 追加画像)

HTML に画像を挿入するには、画像を表示するための HTML タグが必要です。これは、img タ...

MySQL 単一テーブルクエリの例の詳細な説明

1. データを準備するこのテーブルでは次の操作が実行されます 学生テーブルを作成 ( id int ...

データベースのデフォルトパスを変更した後にmysqlが起動できない問題の解決策

序文mysql がデフォルトのデータベース パスを変更したため、サービスを開始できませんでした。ログ...

Vue3+TypeScriptは再帰メニューコンポーネントの完全な例を実装します

目次序文必要成し遂げる最初のレンダリングメニュー項目をクリックしますスタイルの区別デフォルトのハイラ...

Dockerの基本的なネットワーク構成の詳細な説明

外部アクセスポートをランダムにマップする -P フラグを使用すると、Docker は 49000 か...

ノードの対応するバージョンに関する簡単な説明 node-sass sass-loader

目次ノードのバージョンが一致しない、ノードをアップグレードまたはダウングレードするnvm を使用して...

この構成ファイルの排他ロックに失敗したという VMware 仮想マシンのプロンプトの解決方法

VMware が異常シャットダウンした後、再起動すると「この構成ファイルを排他的にロックできませんで...

MySQL における「:=」と「=」の違いの簡単な分析

=設定および更新の場合にのみ、:= と同じ効果、つまり代入効果があり、それ以外の場合は等号の効果があ...

デジタル時計効果を実現するJavaScript

この記事では、デジタル時計効果を実現するためのJavaScriptの具体的なコードを参考までに紹介し...