EASY Geschrieben 3. September Geschrieben 3. September Hallo, Für die einheitliche Formatierung von strings wollte ich mir die einzelnen Längen ausgeben lassen. Dabei bin ich darauf gestoßen, daß Umlaute 2 Zeichen belegen... print("Koln="..string.len("Koln"),"Köln="..string.len("Köln")) print("o="..string.len("o"),"ö="..string.len("ö")) ergibt... Zitat [16:55:31] Schalter wird betätigt -> Taster groß, 0 [16:55:31] Schalter wird betätigt [16:55:31] Koln=4 Köln=5 [16:55:31] o=1 ö=2 So etwas macht mich neugierig... weiß jemand warum? Gruß EASY
prinz Geschrieben 3. September Geschrieben 3. September Das passiert bei vielen Systemen/Programmiersprachen: Wenn ein Zeichen im String nicht zum Standard-Zeichensatz des Systems gehört, wird intern ein Steuerzeichen und z.B. der ASCII-Wert des Zeichens gespeichert. Deshalb können auch an anderen Stellen (z.B. Bezeichnung eines Tabellenelementes) keine Sonderzeichen (auch Umlaute und ß) nicht verwendet werden. Gruß, Wolfgang
Neo Geschrieben 3. September Geschrieben 3. September Hallo EASY, das Studio arbeitet in UTF8, ist also vollständig unicode-kompatibel. Und bei UTF8 bestehen deutsche Umlaute aus 2 Bytes. Lua besitzt eine interne UTF8-Bibliothek, siehe Doku, mit der du die Zeichen unabhängig der Byte-Anzahl ermitteln kann. Ich bin mir grad nicht sicher, ob die Library im Studio aktiviert ist, falls nicht, kann ich das nachholen. Viele Grüße, Neo
EASY Geschrieben 3. September Autor Geschrieben 3. September Hallo, vor einer Stunde schrieb Neo: Lua besitzt eine interne UTF8-Bibliothek, siehe Doku, mit der du die Zeichen unabhängig der Byte-Anzahl ermitteln kann. In ZeroBrane Studio ergibt... print(utf8.len("Koln"),utf8.len("Köln")) 4 4 und in MBS: [19:07:22] Skriptfehler (15): attempt to index a nil value (global 'utf8') ... womit diese (indirekte) Fragestellung... vor einer Stunde schrieb Neo: Ich bin mir grad nicht sicher, ob die Library im Studio aktiviert ist ... beantwortet wäre. vor einer Stunde schrieb Neo: falls nicht, kann ich das nachholen. ... wäre schön ... dann sieht z.B. eine Tabelle... ... in ihren Trennungszeichen nicht so zerfranst aus... Gruß EASY
Neo Geschrieben 4. September Geschrieben 4. September Hallo EASY, ab V9 kannst du in Lua die UTF8-Bibliothek nutzen. Viele Grüße, Neo
EASY Geschrieben 4. September Autor Geschrieben 4. September (bearbeitet) Hallo, Zwar etwas umständlich aber bis zur V9 behelfe ich mir damit... --[[ Umlaute bestehen aus 2 Zeichen! (string.char(195) vorangestellt) Es wird allerdings nur ein Zeichen dargestellt, weshalb die Wortlänge string.len() angepasst werden muß. * string.gsub() ist prinzipiell eine Ersetzungsfunktion und liefert 2 Werte: den geänderten String und die Anzahl der Ersetzungen. Da am geänderten String kein Interesse beseht -> "_" als Variable und "" als Ersetzungsstring (kann jeder beliebige String sein) --]] local wort="Köln-Überdorf" local _,z=string.gsub(wort,string.char(195),"")-- * local n=string.len(wort) local n1=n-z print("Anzahl der Zeichen von "..wort) print(n,"(mit doppeltem Zeichen Umlaut)") print(n1,"(wahre Anzahl der Zeichen)") ... liefert... [17:23:44] Schalter wird betätigt -> Taster groß, 0 [17:23:44] Schalter wird betätigt [17:23:44] Anzahl der Zeichen von Köln-Überdorf [17:23:44] 15 (mit doppeltem Zeichen Umlaut) [17:23:44] 13 (wahre Anzahl der Zeichen) ... dann sieht die Tabelle auch wieder geordnet aus... Gruß EASY Bearbeitet 4. September von EASY
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto besitzen, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen.
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden