2012-05-13 13 views
5

Tentativo di creare la mia prima pagina ASP.NET. Ho ottenuto IIS 5.1 su XP, configurato per eseguire .NET 4. Ho creato una nuova directory virtuale e aggiunto un file .aspx. Quando sfoglio il file, i caratteri non ASCII sono corrotti. Ad esempio, un ü (U + 00FC) viene trasformato in ¼ (U + 00C3 U + 00BC), che è l'equivalente di I-don't-get-this-is-UTF-8.Ho bisogno di web.config per caratteri non ASCII?

Ho provato diversi modi di avvalendosi di questo:

  1. Ho fatto che il file aspx è infatti codificato come UTF-8.
  2. ho impostato il meta tag:

    <meta charset="UTF-8">

  3. ho impostare la directory virtuale per gestire aspx come text/html;charset=utf-8 sotto intestazioni HTTP> Tipo di file in IIS.

  4. Ho aggiunto ResponseEncoding="utf-8" a <%@ Page ... %>.
  5. Ho inserito la stringa in HttpUtility.HtmlEncoded(). Ora ü è stato trasformato in à ¼ (U + 00C3 U + 00BC).

Infine, ho trovato 2 modi che hanno lavorato:

  1. Sostituzione caratteri non ASCII con riferimenti di carattere, come ad esempio &#252; Questa è stata bene negli anni 90, non oggi.
  2. Aggiunta di un file web.config nella directory virtuale, con questo contenuto:

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

Senza fileEncoding impostazione, il parser ASP.NET leggerà l'aspx e corrotto carattere ogni non-ASCII senza tentare di dedurre la codifica del file. È solo qualcosa che i professionisti hanno imparato a convivere, o mi sfugge qualcosa? È un file web.config con le impostazioni di globalizzazione il modo per gestire i caratteri "internazionali" nelle pagine .aspx? Non ricordo di aver avuto problemi simili con PHP, quindi sono perplesso sul motivo per cui è cresciuto con ASP.NET.

+0

ho trovato un altro modo di farlo funzionare senza il file web.config: Salvare la pagina aspx come UTF-8 con contrassegno dell'ordine dei byte (BOM). In generale, UTF-8 non dovrebbe avere bisogno di una distinta base, poiché l'ordine dei byte è implicito nella codifica, ma Microsoft ha una tradizione da richiederlo, che è probabilmente la cosa giusta da fare, dal momento che deduce la codifica del file in più robusto. Immagino che questo sia il tipo di soluzione che stavo cercando, ma i commenti sono ancora benvenuti. –

+0

È consigliabile installare il programma di installazione della piattaforma Web Microsoft e utilizzare IIS express 7.5 e web matrix o VS 2010 express – Aviatrix

risposta

3

Per utilizzare caratteri non ASCII è necessario disporre di due elementi. Salvare i file usando UTF-8, scegliendo questa codifica per i file ed essere sicuri di avere queste impostazioni sul web.config

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

Nota che c'è sempre un web.config su ASP.NET . C'è quello globale che ha anche queste impostazioni e vive nella directory asp.net {drive:}\WINDOWS\Microsoft.NET\Framework\{version}\CONFIG\, e poi nel web.config sul tuo progetto. A volte quello globale imposta la codifica dal paese corrente. In questo caso è necessario reimpostarlo su UTF-8 nel progetto.

Hai trovato tutto quello che già, ho solo sottolineare le 3 impostazioni:

  1. Salvare i file con unicode.
  2. Impostare la requestEncoding = "utf-8"
  3. Impostare la responseEncoding = "utf-8"
+0

. dopo ho aggiunto fileEncoding ha funzionato.

+0

@ blackholeearth0_gmail Ok, aggiornerò la mia risposta – Aristos