Ich möchte Inhalte aus einer Textdatei automatisch auf meine Website übernehmen. Das entsprechende Java-Skript funktioniert auch schon. Nun ist mir aufgefallen das Sonderzeichen wie zum Beispiel Umlaute falsch dargestellt werden. Gibt es eine Möglichkeit, dies zu verhindern?
Javascripte arbeiten immer mit UTF-8 als Zeichencodierung was im Bereich der unteren Zeichentabelle unproblematisch ist. Die deutschen Umlaute liegen aber etwas höher in der Zeichentabelle was nun Probleme macht.
Auf Stackoverflow gibts ne klasse implementierung: Quelle
var escapable = /[\\"\x00-\x1f\x7f-\uffff]/g, meta = { // table of character substitutions '\b': '\b', '\t': '\t', '\n': '\n', '\f': '\f', '\r': '\r', '"' : '\"', '\': '\\' };
function quote(string) {
// If the string contains no control characters, no quote characters, and no // backslash characters, then we can safely slap some quotes around it. // Otherwise we must also replace the offending characters with safe escape // sequences.
escapable.lastIndex = 0; return escapable.test(string) ? '"' + string.replace(escapable, function (a) { var c = meta[a]; return typeof c === 'string' ? c : '\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4); }) + '"' : '"' + string + '"'; }
e.g. quote("Doppelgänger!") will be "Doppelg\u00e4nger!"
var encoded = quote("Doppelgänger!"); var back = eval(encoded);
Als Alternative zu Floyds Vorschlag: ich habe das Problem auch schon serverseitig dadurch lösen können, dass ich im HTTP-Response-Header zusammen mit dem Content-Type eine passende charset-Anweisung mitgeschickt habe, also z.B.
"text/plain; charset=windows-1252"
Das war damals allerdings eine IE-only-Lösung. Inwieweit andere Browser das auswerten, kann ich nicht sagen.