EASY Posted September 3 Share Posted September 3 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 Link to comment Share on other sites More sharing options...
prinz Posted September 3 Share Posted September 3 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 Link to comment Share on other sites More sharing options...
Neo Posted September 3 Share Posted September 3 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 Link to comment Share on other sites More sharing options...
EASY Posted September 3 Author Share Posted September 3 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 Link to comment Share on other sites More sharing options...
Neo Posted September 4 Share Posted September 4 Hallo EASY, ab V9 kannst du in Lua die UTF8-Bibliothek nutzen. Viele Grüße, Neo Link to comment Share on other sites More sharing options...
EASY Posted September 4 Author Share Posted September 4 (edited) 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 Edited September 4 by EASY Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now