3

これが私の問題です。GET/POST 経由でデータを受け取る ASP.NET / C# の Web サイトがあります。

これは「ユーザーが入力した」データですが、Web ページ経由ではなく、私のサーバーに接続するソフトウェアです。

問題は、このソフトウェアが ISO-8859-1 でエンコードされたデータを送信していることです (そのため Café は Caf%e9 として送信されます)、残りの SW/DB は Unicode です

また、データは完全に壊れてしまい、送信されたものの復元が不可能になります:/

これに対処する最善の方法は何ですか?

(読む前に) Request.ContentEncoding を設定しようとしましたが、役に立ちませんでした。

4

5 に答える 5

3

ここで機能した唯一のことは、次のコードを web.config に追加することでした。

<configuration>
  <system.web>
    <globalization requestEncoding="iso-8859-1"/>
  </system.web>
</configuration>

そして、使用します

Request["varName"]

HttpUtility.UrlDecodeorは使用しないHttpUtility.UrlEncodeでください。これら 2 つは生のクエリ文字列でのみ機能します。Request[] はすでにデコードを行っています。

アイデアを投稿してくれた JamesP に感謝します。

于 2010-07-26T07:56:51.397 に答える
1

見る

方法: ASP.NET Web ページのグローバリゼーションのエンコーディングを選択する

短い:

web.config に書き込みます

<configuration>
  <system.web>
    <globalization
      fileEncoding="utf-8"
      requestEncoding="utf-8"
      responseEncoding="utf-8"
      culture="en-US"
      uiCulture="de-DE"
    />
  </system.web>
</configuration>

aspx ヘッダーのエンコーディング エントリを削除します。

utf-8 が正しくない場合は、utf-16 を試してください

これが役立つことを願っています。

于 2008-11-05T09:11:03.543 に答える
1

%e9 は単なる é ですが、UrlEncoded です。Server.UrlDecode リクエスト文字列。

于 2008-11-04T14:31:58.730 に答える
1

質問の元の作成者はこちら。

私を助けたのは、Web.config変数を設定するというGeorgの提案でした。

requestEncoding="iso-8859-1"

そして、すべてが機能するようになりました、ありがとう!

于 2008-11-10T12:36:51.817 に答える
0

私の理解が正しければ、この情報を HTTP リクエストから引き出していることになります。エンコーディングにあるのは HTTP リクエストの本文であると仮定します。

System.Text.Encoding.GetEncoding(...) を使用して、ISO-8859-1 の Encoding オブジェクトを取得できます。次に、そのエンコーディング オブジェクトで GetDecoder() を呼び出し、それを使用してリクエスト ボディを解釈します。リクエストのヘッダー値から Encoding.GetEncoding(...) から読み込むエンコーディング タイプを決定するのが理想的です。これにより、さまざまな構成のサーバーがサポートされます。

于 2008-11-06T08:15:45.727 に答える