C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■100340 / )  Re[14]: IIS 10.0 URLのパラメータの日本語が文字化け
□投稿者/ WebSurfer (2538回)-(2022/07/16(Sat) 09:51:28)
No100323 (こいち さん) に返信

> こちらですが、web.config では requestEncoding, responseEncoding を shift_jis に設定しています。

ということは、結局以下のようになった理由は分からないということですね。

> お客様環境:
> IE:〇
> Edge:文字化け発生
>
> 社内テスト環境:
> IE:文字化け発生
> Edge:〇

質問者さん・お客の固有の環境の問題とかとかがあるとすと、第三者には分からない話な
のかも。


> Dim queryDictionary As NameValueCollection = HttpUtility.ParseQueryString(Context.Request.Url.Query, Encoding.UTF8)
> Dim strName As String = queryDictionary.Get("NAME")
> パラメータの取得時にどの文字コードを指定しているのかよく分からなかったので明示的に指定してみました。
> Encoding.Defalt は「繝・せ繝・」となったため、Encoding.UTF8 を試したら
> 結果、IE も Edge もパラメータで指定した文字を取得することが出来ました。

そこは興味を引いたのでこちらの環境でも試してみました。

「テスト」の生 Shift_JIS のバイト列が送信されてきているのに、UTF-8 でデコードして
もとの「テスト」になるなんてあり得ないと思っていたのですが、実際に試してみたら結果
は以下の通りとなりました。(1) の IE11 が不可解ですが・・・

(1) の IE11 で Request.Url.Query が ?NAME=%E3%83%86%E3%82%B9%E3%83%88

(1) requestEncoding="shift_jis" responseEncoding="shift_jis"

Edge 103.0.1264.49
Request.QueryString["NAME"]: 繝・せ繝・
Request.Url.Query: ?NAME=%E3%83%86%E3%82%B9%E3%83%88

IE11
Request.QueryString["NAME"]: テスト
Request.Url.Query: ?NAME=%E3%83%86%E3%82%B9%E3%83%88 ←これが不可解


(2) requestEncoding, responseEncoding 設定なし(デフォルトの UTF-8)

Edge 103.0.1264.49
Request.QueryString["NAME"]: テスト
Request.Url.Query: ?NAME=%E3%83%86%E3%82%B9%E3%83%88

IE11
Request.QueryString["NAME"]: ?e?X?g
Request.Url.Query: ?NAME=%EF%BF%BDe%EF%BF%BDX%EF%BF%BDg

注: 上の ? は REPLACEMENT_CHARACTER (U+FFFD) で、U+FFFD は UTF-8 のバイト列で
  は EF BF BD となります。Unicode デコーダーではデコードできず置き換えられ
  た結果です。

返信 編集キー/


管理者用

- Child Tree -