Domanda

Sto lavorando su un'applicazione web, dove trasferisco i dati dal server al browser in XML.

Dato che sono danese, mi imbatto rapidamente in problemi con i personaggi æøå.

So che in html utilizzo il file "æøå" per æøå.

tuttavia, non appena i caratteri passano attraverso JavaScript, ottengo delle caselle nere con "?" in loro durante l'uso æøå, E "æøå" viene stampato così com'è.

Mi sono assicurato di impostarlo su utf-8, ma non aiuta molto.

Idealmente, voglio che funzioni con qualsiasi carattere speciale (naturalmente).

L'esempio che non funziona è incluso di seguito:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Untitled Document</title>
        <script type="text/javascript" charset="utf-8">
            alert("&aelig;&oslash;&aring;");
            alert("æøå");

        </script>
    </head>
    <body>
    </body>
</html>

Che cosa sto facendo di sbagliato?


Ok, grazie alla risposta di Grapefrukts, ho funzionato.

In realtà ne avevo bisogno per i dati provenienti da un server MySQL.Poiché il salvataggio dei file nella codifica UTF-8 risolve solo il problema del contenuto statico, immagino di includere la soluzione per le stringhe da un server MySQL, estratta utilizzando PHP:

utf8_encode($MyStringHere)

È stato utile?

Soluzione

Specificare semplicemente UTF-8 nell'intestazione non è sufficiente.Scommetto che non hai salvato il tuo file come UTF-8.Qualsiasi editor di testo ragionevolmente avanzato avrà questa opzione.Provalo e sono sicuro che funzionerà!

Altri suggerimenti

Se non riesci a impostare la codifica della risposta, puoi utilizzare \u sequenza di escape nella stringa letterale JavaScript per visualizzare questi caratteri.

alert("\u00e6\u00f8\u00e5")

Puoi anche usare String.fromCharCode() per emettere un carattere da un'entità numerica.

per esempio. String.fromCharCode( 8226 ) creerà un carattere punto elenco.

Ottengo "æøå" per il primo e alcuni caratteri spazzatura per il successivo.Potrebbe essere che Javascript non stia alterando (o mojibake) le tue lettere ma la finestra di dialogo di avviso utilizza il carattere predefinito del sistema e il carattere non è in grado di visualizzare le lettere?

Uso il codice in questo modo con la lingua tailandese.Va bene.

$message è la mia variabile PHP.

echo("<html><head><meta charset='utf-8'></head><body><script type='text/javascript'>alert('" . $message . "');</script></body></html>");

Spero che questo possa aiutare.Grazie.

(Non posso pubblicare l'immagine di ciò che ho fatto poiché il sistema diceva "Non ho abbastanza reputazione", quindi lascio l'immagine qui. http://goo.gl/9P3DtI Scusa per l'inconveniente.)

Scusate per il mio inglese debole.

Per me funziona come previsto:

alert("&aelig;&oslash;&aring;");

...crea un avviso contenente la stringa "æøå" mentre

alert("æøå");

...crea un alert con i caratteri non ascii.

Javascript è abbastanza pulito da UTF-8 e non tende a creare ostacoli sulla tua strada.

Forse lo stai mettendo su un server web che lo serve come ISO-8859-1?Se usi Apache, nel file di configurazione di Apache (o in .httaccess, se puoi eseguire l'override), dovresti avere una riga

AddCharset utf-8 .js

(Nota:modificato per sfuggire alle e commerciali...altrimenti non avrebbe senso.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top