2012-05-13 9 views
5

Ich versuche, meine erste ASP.NET-Seite zu erstellen. Hat IIS 5.1 auf XP, konfiguriert, um .NET 4 auszuführen. Erstellt ein neues virtuelles Verzeichnis und fügte eine ASPX-Datei hinzu. Wenn ich die Datei durchsuche, sind Nicht-ASCII-Zeichen beschädigt. Zum Beispiel wird ein ü (U + 00FC) in Ü umgewandelt (U + 00C3 U + 00BC), was das I-Don't-get-this-is-UTF-8-Äquivalent ist.Benötige ich web.config für Nicht-ASCII-Zeichen?

Ich habe verschiedene Wege versucht, diese von Anspruch nimmt:

  1. ich sicher, dass die ASPX-Datei in der Tat als UTF-8 codiert ist.
  2. Ich habe das Meta-Tag:

    <meta charset="UTF-8">

  3. ich das virtuelle Verzeichnis in IIS zu handhaben ASPX- als text/html;charset=utf-8 unter HTTP-Header> Dateityp festgelegt.

  4. Ich fügte ResponseEncoding="utf-8" zu <%@ Page ... %> hinzu.
  5. Ich habe die Zeichenfolge in HttpUtility.HtmlEncoded() eingefügt. Nun wurde das ü in à ¼ (U + 00C3 U + 00BC) transformiert.

Schließlich fand ich 2 Möglichkeiten, wie gearbeitet:

  1. Ersetzen Nicht-ASCII-Zeichen mit Zeichenreferenzen, wie &#252; Das war in Ordnung, in den 90er Jahren, nicht heute.
  2. Hinzufügen einer Datei web.config auf das virtuelle Verzeichnis, mit folgendem Inhalt:

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

Ohne fileEncoding Einstellung wird der ASP.NET-Parser die ASPX und korrupte jeder Nicht-ASCII-Zeichen gelesen ohne zu versuchen, auf die Dateicodierung zu schließen. Ist das etwas, mit dem Sie Profis gelernt haben, oder fehlt mir etwas? Ist eine web.config-Datei mit Globalisierungseinstellungen die Möglichkeit, "internationale" Zeichen auf ASPX-Seiten zu behandeln? Ich kann mich nicht erinnern, ähnliche Probleme mit PHP gehabt zu haben, also bin ich verwirrt, warum das mit ASP.NET auftaucht.

+0

fand ich eine andere Art und Weise funktioniert, ohne die Datei web.config machen: Speichern Sie die ASPX-Seite als UTF-8 mit Byte-Reihenfolge-Markierung (BOM). Im Allgemeinen sollte UTF-8 keine BOM benötigen, da die Byte-Reihenfolge implizit in der Kodierung ist, aber Microsoft hat eine Tradition, dies zu verlangen, was wahrscheinlich das Richtige ist, da es die Kodierung der Datei weiter leitet robust. Ich denke, das ist die Art von Lösung, die ich suchte, aber Kommentare sind immer noch willkommen. –

+0

Sie sollten in Erwägung ziehen, das Installationsprogramm für Microsoft Web Platform zu installieren und IIS express 7.5 und web matrix oder VS 2010 express – Aviatrix

Antwort

3

Um Nicht-ASCII-Zeichen zu verwenden, müssen Sie zwei Dinge haben. Speichern Sie die Dateien mit UTF-8, indem Sie diese Codierung für die Dateien und sicher sein, dass Sie diese Einstellungen auf Ihrem web.config haben

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

Beachten Sie, dass es immer eine web.config auf ASP.NET . Es gibt die globale, die auch diese Einstellungen und lebt im asp.net-Verzeichnis {drive:}\WINDOWS\Microsoft.NET\Framework\{version}\CONFIG\, und dann die web.config auf Ihrem Projekt. Manchmal setzt das globale die Codierung aus dem aktuellen Land. In diesem Fall müssen Sie es in Ihrem Projekt auf UTF-8 zurücksetzen.

Sie haben alle gefunden, die bereits ich darauf hinweisen, nur die drei Einstellungen:

  1. Speichern Sie Ihre Dateien mit Unicode.
  2. Stellen Sie die requesten = „utf-8“
  3. Stellen Sie die responseen = „utf-8“
+0

zu verwenden, dies hat nicht funktioniert. Nachdem ich fileEncoding hinzugefügt hatte, funktionierte es.

+0

@ blackholearth0_gmail Ok, ich werde meine Antwort aktualisieren – Aristos

Verwandte Themen