Sonderzeichen erkennen

Yvon Folz

Grünschnabel
Hallo Allerseits,

ich hab mir einen Counter geschrieben der zählt wieviele Zeichen noch übrig sind. Danach wird der Content in der Datenbank abgespeichert. Leider habe ich jetzt das Problem das Sonderzeichen (dt., fr. etc.) 2 Bytes belegen.

Kann ich in JavaScript "allgemeingültig" die Zeichen von vornherein über eine fertige Funktion erkennen, oder muss ich die Zeichen "extra" angeben. Es handelt sich um utf-8.

Gruß Yvon
 
Das wäre eine Möglichkeit:
Code:
String.prototype.utf8len=function()
{
  var count=0;
  try{count+=this.match(/[\u0000-\u007F]/g).length}catch(e){}
  try{count+=this.match(/[\u0080-\u07FF]/g).length*2}catch(e){}
  try{count+=this.match(/[\u0800-\uFFFF]/g).length*3}catch(e){}
  try{count+=this.match(/[^\u0000-\uFFFF]/g).length*4}catch(e){}
  return count;
}

bestimmte Unicode-Bereiche haben einen bestimmten byte-Bedarf, das Skript zählt diesen für alle Zeichen.

Beispiel:
Code:
alert(String('Käse kostet heute 20 €').utf8len());

Der String besitzt 22 Zeichen, der alert sollte aber 25 ausgeben, weil das ä 2 Bytes verbraucht und das 3 Bytes.
 
Zuletzt bearbeitet:
Zurück