2014-10-25 12 views
5

Vediamo un esempio: c'è una parola tedesca: FußgängerübergängeC# ASP.NET MVC di file di risorse è in un formato di codifica di strano nel codice HTML

Quello che ho:

  • web.config di file:

    ... 
    <system.web> 
        <globalization 
         fileEncoding="utf-8" 
         requestEncoding="utf-8" 
         responseEncoding="utf-8" 
         culture="auto" 
         uiCulture="auto" 
        /> 
    ... 
    
  • un file di risorse che contiene questa parola:

    <?xml version="1.0" encoding="utf-8"?> 
    <root> 
        ... 
        <data name="TestWord" xml:space="preserve"> 
         <value>Fußgängerübergänge</value>  
        </data> 
        ... 
    </root> 
    
  • una pagina html hard-coded la stessa parola e l'utilizzo di questa risorsa per fare riferimento a questa parola e anche il recupero di questa parola da DB:

    ... 
    <head> 
        <meta charset="utf-8"> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        ... 
    </head> 
    <body> 
        <div>Fußgängerübergänge</div> 
        <div>@Model.SameWordFromDbTable.TestWord</div> 
        <div>@Resources.MyResource.TestWord</div> 
        <div>@MvcHtmlString.Create(Resources.MyResource.TestWord)</div> 
    </body> 
    ... 
    
  • Quando li ho check nel codice sorgente della pagina web in cui appaiono in due modi diversi:

    ... 
    <head> 
        <meta charset="utf-8"> 
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
        ... 
    </head> 
    <body> 
        <div>Fußgängerübergänge</div> 
        <div>Fußgängerübergänge</div> 
        <div>Fu&#223;g&#228;nger&#252;berg&#228;nge</div> 
        <div>Fu&#223;g&#228;nger&#252;berg&#228;nge</div> 
    </body> 
    ... 
    

Domanda: che cosa ho fatto di sbagliato, come posso risolvere questo iss "codifica" ue? Cosa devo fare se voglio che le ultime 2 parole appaiano nel codice sorgente come le prime due?

risposta

6

Se si vuole evitare che il testo di essere codificato HTML, si può semplicemente utilizzare Html.Raw:

@Html.Raw(Resources.MyResource.TestWord) 

è la codifica in realtà un problema, però?

+0

@ Html.Raw non ha funzionato: (ancora lo stesso comportamento ... – Bundy

+0

Ah, OK. Ciò implica che il tuo TestWord è già codificato in HTML quando è estratto dalle tue risorse - proverò un paio di cose e modifica la risposta. Nel frattempo, potresti decodificarlo con l'aspetto disordinato: Html.Raw (HttpUtility.HtmlDecode (Resources.MyResource.TestWord)) – Alan

+0

Ancora lo stesso, qualunque cosa provenga da db o hardcoded sono "puri" -texts qualunque viene dalla risorsa è strano ... Chiunque controlli il sito web, la "vista" di esso è ok, ma il codice sorgente è mezzo-normale-mezzo codificato ... potrebbe non essere fastidioso per gli spettatori, ma da allora Non ho idea di cosa causi questo problema è fastidioso per me :) – Bundy