Bitte um Hilfe bei Zeichenzähler Erweiterung

tge

Mitglied
Hallo Liebe Community,

ich habe hier einen Code der die Zeichen zählt, der funktioniert auch super

Java:
function countChar(val) {
      var len = val.value.length;
      if (len >= 401) {
          val.value = val.value.substring(0, 400);
      } else {
          $('#charNum').text(400 - len);
      }
  };

ich habe ein Formular das zum Beispiel beim Titel (maxlength="13") ist und meiner Datenbank wird ein Umlaut als zwei Zeichen hinterlegt
In der Datenbank wird das Wort "Zeichenzähler" so "Zeichenzähler" hinterlegt und damit ist die Länge schon bei 14 Zeichen und dann kommt die Fehlermeldung "Nicht 13 Zeichen überschreiten"

Also sprich ich brauche eine erweiterung des Codes damit die Umlaute (Ü,Ö,Ä,ü,ö,ä,ß) doppelt gezählt werden

Da ich in Javascript nicht so fit bin (Grünschnabel) bitte ich euch Liebe Community um Hilfe.
 
Zuletzt bearbeitet:

LimDul

Top Contributor
Das ist Javascript und kein Java. Und ich würde lieber die DB anpassen, da sie 13 Zeichen kann und nicht 13 Byte. Den ein Umlaut ist auch nur ein Zeichen, aber je nach Kodierung 2 Byte.
 

tge

Mitglied
Das ist Javascript und kein Java. Und ich würde lieber die DB anpassen, da sie 13 Zeichen kann und nicht 13 Byte. Den ein Umlaut ist auch nur ein Zeichen, aber je nach Kodierung 2 Byte.
Gibt es für diesen Javascript Code eine Lösung?

Ich habe das gefunden

Java:
sonderzeichen = val.match(/[^a-z A-Z0-9]/g);
//Buchstaben und Zahlen sind keine "Sonderzeichen"
 
if (sonderzeichen) {
  anz -= sonderzeichen.length;
  anz += (sonderzeichen.length * 2);
}

ich weiß nur nicht ob und wie das damit funktioniert
 
K

kneitzel

Gast
Also generell:
Java:
  anz -= sonderzeichen.length;
  anz += (sonderzeichen.length * 2);
halte ich für schlechten Code. Du ziehst erst etwas ab um dann das doppelte hinzu zu fügen?
Java:
  anz += sonderzeichen.length;
Dürfte doch das gleiche Ergebnis bringen...
 

tge

Mitglied
Also generell:
Java:
  anz -= sonderzeichen.length;
  anz += (sonderzeichen.length * 2);
halte ich für schlechten Code. Du ziehst erst etwas ab um dann das doppelte hinzu zu fügen?
Java:
  anz += sonderzeichen.length;
Dürfte doch das gleiche Ergebnis bringen...
Gibt es für diesen Javascript Code eine Lösung? Was wäre ein guter Code?
 
K

kneitzel

Gast
Also die Verbesserung dieser zwei Zeilen habe ich Dir ja schon gegeben, denn a - x + x*2 = a + x.

Was ansonsten den Code angeht werde ich dir nicht weiter helfen können, denn ich mache sehr wenig mit JavaScript und das ganze Problem erscheint mir mehr wie dubios.

Was für ein Feld hast Du denn in der Datenbank definiert und welche Datenbank nutzt du überhaupt? Hast Du da VARCHAR oder CHAR als Datentyp statt NVARCHAR / NCHAR? Oder was treibst Du da überhaupt genau? Ich denke, dass das Problem bereits im Ansatz zu finden ist. Wenn Du Zeichen incl. Umlaute speichern willst, dann solltest Du den entsprechenden Datentyp nutzen und dann klappt auch die Zählung der Zeichen.

Und wenn du die Umlaute nicht zulassen willst, dann lasse sie auch nicht zu.
 

tge

Mitglied
Also die Verbesserung dieser zwei Zeilen habe ich Dir ja schon gegeben, denn a - x + x*2 = a + x.

Was ansonsten den Code angeht werde ich dir nicht weiter helfen können, denn ich mache sehr wenig mit JavaScript und das ganze Problem erscheint mir mehr wie dubios.

Was für ein Feld hast Du denn in der Datenbank definiert und welche Datenbank nutzt du überhaupt? Hast Du da VARCHAR oder CHAR als Datentyp statt NVARCHAR / NCHAR? Oder was treibst Du da überhaupt genau? Ich denke, dass das Problem bereits im Ansatz zu finden ist. Wenn Du Zeichen incl. Umlaute speichern willst, dann solltest Du den entsprechenden Datentyp nutzen und dann klappt auch die Zählung der Zeichen.

Und wenn du die Umlaute nicht zulassen willst, dann lasse sie auch nicht zu.
Ich habe VARCHAR, CHAR könnte ich noch wahlen, NVARCHAR habe ich nicht zur auswahl
 
K

kneitzel

Gast
Das PhpMyAdmin ist nur das Frontend, mit dem Du auf die Datenbank zugreifst? Also nutzt Du MySQL oder MariaDB.

Da ist VARCHAR ein Synonym für NVARCHAR, spricht: Da gibt es kein NVARCHAR.

Da ist aber die Frage, woher das kommt mit der doppelten Zählung. Wenn der Umlaut selbst als z.B. "ä"ankommt, dann deutet das darauf hin, dass Du da ein Problem mit der Kodierung hast. Wie greifst Du denn aus JavaScript auf die Datenbank zu? Da wird es hoffentlich auch sowas wie PreparedStatements geben und so?

Derzeit scheinst Du da auf jeden Fall lediglich Symptome zu bekämpfen statt der eigentlichen Ursache.
 

tge

Mitglied
Das PhpMyAdmin ist nur das Frontend, mit dem Du auf die Datenbank zugreifst? Also nutzt Du MySQL oder MariaDB.

Da ist VARCHAR ein Synonym für NVARCHAR, spricht: Da gibt es kein NVARCHAR.

Da ist aber die Frage, woher das kommt mit der doppelten Zählung. Wenn der Umlaut selbst als z.B. "ä"ankommt, dann deutet das darauf hin, dass Du da ein Problem mit der Kodierung hast. Wie greifst Du denn aus JavaScript auf die Datenbank zu? Da wird es hoffentlich auch sowas wie PreparedStatements geben und so?

Derzeit scheinst Du da auf jeden Fall lediglich Symptome zu bekämpfen statt der eigentlichen Ursache.
Das JavaScript greift überhaut nicht auf die Datenbank, das macht die php, das JavaScript soll beim zählen der Zeichen helfen
Ich habe ein Verzeichnis und eine Vorgabe an Zeichen für den Titel und Beschreibung
 

LimDul

Top Contributor
Das JavaScript greift überhaut nicht auf die Datenbank, das macht die php, das JavaScript soll beim zählen der Zeichen helfen
Ich habe ein Verzeichnis und eine Vorgabe an Zeichen für den Titel und Beschreibung
Ein Ä ist aber ein Zeichen und nicht zwei. Es kann je nach Kodierung mal mehr und mal weniger Byte in Anspruch nehmen. Es gibt sogar Zeichen die in der UTF-8 Kodierung mehr als zwei Byte in Anspruch nehmen.

Das Problem liegt - wie @kneitzel schon sagt an der Datenbank Verbindung. Entweder der Zeichensatz in der DB ist falsch eingestellt oder das PHP Skript baut Grütze.
 
K

kneitzel

Gast
Das JavaScript greift überhaut nicht auf die Datenbank, das macht die php, das JavaScript soll beim zählen der Zeichen helfen
Ich habe ein Verzeichnis und eine Vorgabe an Zeichen für den Titel und Beschreibung
Also egal wo und an welcher Stelle:
Strings werden intern als Bytes gespeichert. Welche Bytes für welches Zeichen verwendet werden, nennt sich Encoding. Du nutzt irgendwie zwei Encodings. Wenn Du das Programm Notepad++ nutzen solltest (Setzt ein Windows System voraus), dann kannst Du das spielerisch ausprobieren:
Einfach ein Dokument erstellen, Umlaute reintippen und dann die Kodierung ändern. Also von ANSI zu UTF8 und zurück. Wichtig: Kodierung ändern über den direkten Menüpunkt - nicht über "Konvertiere zu ..."

Ob das nun auf dem Weg vom Browser -> Server, eine Problematik auf dem Server beim Übergang Apache (oder was auch immer) -> PHP oder dann von PHP hin zur Datenbank: Das ist mir egal. Meine erste Vermutung war, dass es an der Datenbank hätte liegen können. Das hätte ich aber gleich wissen müssen, denn Du hast die falsche Kodierung ja schon direkt erwähnt gehabt. Aber bei anderen Datenbanken gibt es die Unterscheidung zwischen VARCHAR und NVARCHAR (z.B, bei MS SQL oder Oracle - da natürlich NVARCHAR2), denn NVARCHAR ist da explizit die Unicode Variante.

Das Nette ist dabei, dass diese Problematik nicht einmal groß auffällt (Außer bei der Länge), denn auf dem Rückweg machst Du den Fehler erneut und damit sieht es korrekt aus. Aber das ändert nichts daran, dass Du in der Datenbank schlicht falsche Daten schreibst. Das ist aus meiner Sicht ein absolutes NO GO. Daten sind eine Art Kapital von Firmen, Zerhau die Daten und du zerhaust die Firma! Klar - das kann unkritische Daten treffen und falsch gespeicherte Umlaute werden ggf. auch niemanden zu sehr interessieren.... Aber wer weiß, wo du morgen zuschlägst. Vielleicht bei der Buchführung Zahlen in ihrer Codierung verdrehen (kriegt man das irgendwie mit einfachen Mitteln überhaupt hin? Wäre mal interessant ... also so Richtung Big Endian / Little Endian Vertauschung ... )
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
O Bitte um Hilfe Angular, React, JQuery - Fragen zu JavaScript 3
R Brauche Hilfe bei dem Java Script Bitte Angular, React, JQuery - Fragen zu JavaScript 3
R Rolldown Menü Hilfe bitte Angular, React, JQuery - Fragen zu JavaScript 2
S Bitte um Hilfe Script gesucht Angular, React, JQuery - Fragen zu JavaScript 4
T Totaler Newbee bitte dringend um Hilfe Angular, React, JQuery - Fragen zu JavaScript 2
C Anfängerfehler bitte um Rat Angular, React, JQuery - Fragen zu JavaScript 3
R admin: bitte löschen Angular, React, JQuery - Fragen zu JavaScript 0
G Hover! Wichtig und dringend bitte! Angular, React, JQuery - Fragen zu JavaScript 2
M Serveranfragen bitte warten mit * überbrücken NEED HELP !!! Angular, React, JQuery - Fragen zu JavaScript 4
M och noe, bitte nicht Angular, React, JQuery - Fragen zu JavaScript 3
M JavaScript Hilfe dringend (v.2) Angular, React, JQuery - Fragen zu JavaScript 1
M Hilfe! Feature detection - Browser nach Java abfragen Angular, React, JQuery - Fragen zu JavaScript 3
FranziskaN Hilfe Los-Topf in js und html Angular, React, JQuery - Fragen zu JavaScript 18
T Bin neu und brauche Hilfe Angular, React, JQuery - Fragen zu JavaScript 4
T Benötige Hilfe Angular, React, JQuery - Fragen zu JavaScript 11
K Hilfe bei Caesar Verschlüsselung Angular, React, JQuery - Fragen zu JavaScript 2
N Hilfe, kann jemand den Fehler finden? Angular, React, JQuery - Fragen zu JavaScript 4
A Hilfe für guten Zweck Angular, React, JQuery - Fragen zu JavaScript 6
L suche Hilfe bei Anpassung eines Scripts Angular, React, JQuery - Fragen zu JavaScript 5
M Hilfe bei kleinem Script Angular, React, JQuery - Fragen zu JavaScript 8
O Anfänger bittet um Hilfe neuer Versuch Angular, React, JQuery - Fragen zu JavaScript 1
B Photoshop Script Hilfe Angular, React, JQuery - Fragen zu JavaScript 2
K Javascript "Bild mit Pfeiltasten automatisch bewegen" HILFE Angular, React, JQuery - Fragen zu JavaScript 0
F Hilfe bei if Abfrage Angular, React, JQuery - Fragen zu JavaScript 2
K Hilfe bei mitwachsenden Textboxen. Angular, React, JQuery - Fragen zu JavaScript 5
H Hilfe bei quiz gesucht Angular, React, JQuery - Fragen zu JavaScript 5
F Hilfe Button mit Javascript Angular, React, JQuery - Fragen zu JavaScript 2
F [S] Hilfe beim JavaScript auf Homepage Angular, React, JQuery - Fragen zu JavaScript 4
R Java Code Hilfe Angular, React, JQuery - Fragen zu JavaScript 16
J Von javascript zu java HILFE Angular, React, JQuery - Fragen zu JavaScript 5
B Brauche Hilfe bei Java-Script... Angular, React, JQuery - Fragen zu JavaScript 4
Bloodfire Brauche Hilfe bei Java Skript Angular, React, JQuery - Fragen zu JavaScript 5
A Brauche hilfe bei java-script Angular, React, JQuery - Fragen zu JavaScript 3
V Hilfe Angular, React, JQuery - Fragen zu JavaScript 7
M Hilfe gesucht für ein Projekt Angular, React, JQuery - Fragen zu JavaScript 1
C Hilfe bei passwort skript Angular, React, JQuery - Fragen zu JavaScript 3
S Brauche Hilfe mit Java Script Angular, React, JQuery - Fragen zu JavaScript 2
M Advend Advend mein Lichtlein ist ausgebrannt :( HILFE Angular, React, JQuery - Fragen zu JavaScript 2
G Hilfe - Javascript geht auf meinem Rechner nicht. Angular, React, JQuery - Fragen zu JavaScript 2
M Hilfe Angular, React, JQuery - Fragen zu JavaScript 5
J Brauche Hilfe, weiß aber nicht wie das heißt! Angular, React, JQuery - Fragen zu JavaScript 8
L Hilfe bei Bildscroll Script Angular, React, JQuery - Fragen zu JavaScript 5
A HILFE - Popup soll sich selbst aktualisieren. Angular, React, JQuery - Fragen zu JavaScript 3
G Hilfe bei Mauskoordinaten abfrage Angular, React, JQuery - Fragen zu JavaScript 4
A Brauche hilfe bei einen Servlet Angular, React, JQuery - Fragen zu JavaScript 8
L Hilfe! Newbie verzweifelt! Angular, React, JQuery - Fragen zu JavaScript 7
S Preloader hilfe Angular, React, JQuery - Fragen zu JavaScript 7
O Newbie sucht Hilfe Angular, React, JQuery - Fragen zu JavaScript 3
H Ich brauche hilfe Angular, React, JQuery - Fragen zu JavaScript 3
M Ich brauch jetzt, genau jetzt Hilfe!!!! Angular, React, JQuery - Fragen zu JavaScript 3
R Netscap + Java Brauche Hilfe Angular, React, JQuery - Fragen zu JavaScript 1
N HILFE:... ICH KOMME NET MEHR WEITER! Angular, React, JQuery - Fragen zu JavaScript 2

Ähnliche Java Themen

Neue Themen


Oben