Im Rahmen meiner aktuellen Projektarbeit war wieder einmal auf der Suche nach einer Lösung für folgendes Problem:
Ich habe mir ein CustomControl geschrieben, das ein GridView lädt und hier dann entsprechend der übergebenen Datenquelle den entsprechenden Text an eine Textbox im Control übergibt.
Jetzt kommt es im deutsche Sprachraum immer wieder vor, daß "Sonderzeichen" wie ü, ä, ö usw. verwendet werden. (Vielleicht kommt ja noch die Reform der Reform und diese Zeichen werden im Wege der Globalisierung aus dem Schriftzeichensatz der deutschsprachigen Regionen gestrichen)

Wie man sehen kann, zeigt das GridView das "ü" noch richtig an. Der gerenderte HTML-Code stellt das "ü" allerdings als Unicode das - also "ü". Im Ergebnis wird die so auch an die Textbox übergeben:

Da mir ad hoc erst einmal keine Lösung für dieses Problem einfiel, kam mir der Gedanke, das Ganze an der Stelle zu lösen, wo der Inhalt an die Textbox übergeben wird. Also mußte eine Javascriptlösung her.
Die Aufgabenstellung war dabei bekannt: Es gibt eine Zeichenfolge, die eine oder mehrere Zeichenfolgen beinhaltet, die dem Muster "&#Zahl;" entspricht.
Die Lösung ist dann ein prototype für String().
String.prototype.fromDecCode = function(){
var i = null;
var _i = null;
var temp = null;
var str = this;
myRegExp = new RegExp();
i = str.indexOf('&#');
if(i > -1){
_i = str.indexOf(';');
temp = str.substring(i+2, _i);
myRegExp.compile(temp,'g');
str = temp.replace(myRegExp, String.fromCharCode(temp));
}
return str;
} Damit war mein Problem gelöst.
Wie ich bei meiner Netzsuche feststellen mußte, hat sich in diversen Foren schon so manch anderer mit diesem Problem geplagt.
Update: 25.08.2007
Unicode - Codierungen für deutsche Umlaute
ä \u00c4
ä \u00e4
ö \u00d6
ö \u00f6
ü \u00dc
ü \u00fc
ß \u00df
Für die UniCode Convertierung ist die folgende Methode sehr hilfreich: String.prototype.fromUnicode
Ihr Kommentar zu diesem Beitrag: