| 

.NET C# Java Javascript Exception

2
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?
18.11.2011
scrappedcola 11 1
2 Antworten
1
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);
18.11.2011
Floyd 11,0k 3 9
1
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.
18.11.2011
Matthias Hlawatsch 8,4k 2 8

Stelle deine Web-Frage jetzt!