7

初めての ASP.NET ページを作成しようとしています。XP で IIS 5.1 を取得し、.NET 4 を実行するように構成しました。新しい仮想ディレクトリを作成し、.aspx ファイルを追加しました。ファイルを参照すると、ASCII 以外の文字が壊れています。たとえば、ü (U+00FC) は ü (U+00C3 U+00BC) に変換されます。これは、I-don't-get-this-is-UTF-8 と同等です。

私はこれを利用するさまざまな方法を試しました:

  1. .aspx ファイルが実際に UTF-8 としてエンコードされていることを確認しました。
  2. メタタグを設定しました:

    <meta charset="UTF-8">

  3. text/html;charset=utf-8IIS の [HTTP ヘッダー] > [ファイルの種類] で.aspx を処理するように仮想ディレクトリを設定しました。

  4. に追加ResponseEncoding="utf-8"しました<%@ Page ... %>
  5. に文字列を挿入しましたHttpUtility.HtmlEncoded()。ü は ü (U+00C3 U+00BC) に変換されました。

最後に、うまくいく2つの方法を見つけました:

  1. ASCII 以外の文字を次のような文字参照に置き換える&#252;これは 90 年代には問題ありませんでしたが、今日では問題ありませんでした。
  2. 次の内容の web.config ファイルを仮想ディレクトリに追加します。

    <?xml version="1.0" encoding="utf-8"?>
    <configuration>
      <system.web>
        <globalization fileEncoding="utf-8"/>
      </system.web>
    </configuration>
    

設定しないfileEncodingと、ASP.NET パーサーは .aspx を読み取り、ファイル エンコーディングを推測せずにすべての非 ASCII 文字を破損します。これはあなたのプロが一緒に暮らすことを学んだだけですか、それとも私は何かを見逃していますか? グローバリゼーション設定を含む web.config ファイルは、.aspx ページで「国際」文字を処理する方法ですか? PHP で同様の問題が発生したことを覚えていないので、なぜこれが ASP.NET で発生するのか不思議です。

4

2 に答える 2

4

非 ASCII 文字を使用するには、2 つのものが必要です。ファイルにこのエンコーディングを選択して、UTF-8 を使用してファイルを保存し、web.configにこれらの設定があることを確認してください。

<globalization requestEncoding="utf-8" responseEncoding="utf-8"  fileEncoding="utf-8" />

ASP.NET には常に web.config があることに注意してください。これらの設定もあり、asp.net ディレクトリ{drive:}\WINDOWS\Microsoft.NET\Framework\{version}\CONFIG\に存在するグローバルなものがあり、次にプロジェクトの web.config があります。グローバルなものは、現在の国からエンコーディングを設定することがあります。この場合、プロジェクトで UTF-8 に戻す必要があります。

あなたはすでにそれをすべて見つけました.3つの設定を指摘するだけです:

  1. ファイルをユニコードで保存します。
  2. requestEncoding="utf-8" を設定します
  3. responseEncoding="utf-8" を設定します
于 2012-05-13T16:05:59.270 に答える