Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 11-04-2005, 15:59   #1 (permalink)
Flash User
 
Registriert seit: Nov 2002
Beiträge: 96
Question UTF8-Cosierung mit ActionScript

Hallo zusammen,

gibt es eine Möglichkeit, einen String mit ActionScript mit UTF8 zu codieren?
Ich brauche die Zeichenlänge des über loadVar geladenen Strings (String.length) *mit* den UTF8-Codezeichen (die auf der Datei auf dem Server natürlich enthalten sind). Sobald ich den String im Flash habe, wird alles in unsere 'normalen' Zeichensatz konvertiert ...

Gruß
Nicki
nickinicki ist offline   Mit Zitat antworten
Alt 11-04-2005, 22:16   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Hmm, das würde ich vom PHP-Script erledigen lassen...
  Mit Zitat antworten
Alt 12-04-2005, 13:54   #3 (permalink)
Flash User
 
Registriert seit: Nov 2002
Beiträge: 96
Das PHP-Script erledigt das auch und sendet mir den String ins Flash. Der so UTF8-codierte String hat eine bestimmte Länge von Zeichen bzw. Bytes. In Flash möchte ich diese Anzahl von Bytes für eben diesen codierten String nachvollziehen. String.length liefert aber nur die Anzahl an realen Zeichen innerhalb des Strings. Wie bekomme ich in Flash aber die Länge des UTF8-codierten Strings?
nickinicki ist offline   Mit Zitat antworten
Alt 12-04-2005, 14:42   #4 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
..wie schon gesagt...mit php
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 12-04-2005, 14:50   #5 (permalink)
Flash User
 
Registriert seit: Nov 2002
Beiträge: 96
Ich habe doch geschrieben, dass ich in Flash die Codierung nachvollziehen will, die in PHP gemacht wurde ...
nickinicki ist offline   Mit Zitat antworten
Alt 12-04-2005, 15:48   #6 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
ganz schön hartnäckig und unbelehrbar ;-)

mit UTF8 besteht jedes zeichen aus 2bytes und ist somit doppelt so lange wie z.b. ein ascii-file.

such mal auf deiner festpaltte nach
../Configuration/FontEmbedding/UnicodeTable.xml
da stehen die 2byte-codes drinn.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 12-04-2005, 16:21   #7 (permalink)
Flash User
 
Registriert seit: Nov 2002
Beiträge: 96
Jo, wahrscheinlich fehlt mir der Durchblick

UTF8-Zeichen haben zwei Bytes, aber:

PHP-Code:
<?PHP
$iHandle 
fopen("text.txt""a+");
$sNewLine utf8_encode("test");
fwrite($iHandle$sNewLine);
fclose($iHandle);
echo(
"Filesize: "+filesize("text.txt"));
?>
Obiges Script gibt "Filesize: 4" aus.
"$sNewLine = utf8_encode("öhm")" gibt "Filesize: 4" aus.
"$sNewLine = utf8_encode("ööhm")" gibt "Filesize: 6" aus.

Wieso haben nur die Sonderzeichen zwei Bytes und nicht alle Zeichen?
nickinicki ist offline   Mit Zitat antworten
Alt 12-04-2005, 17:02   #8 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
a) mit flash wirst du wenig glück haben.

b) wie dir alle empfohlen haben, mit php geht etwas.
wenn du näheres über unicode wissen willst, dann schau doch bitte mal bei
http://www.unicode.org/standard/tran...ns/german.html
und
http://www.unicode.org/charts/charindex.html
vorbei.

da gibt es utf8 und utf16 und beides mit bzw. ohne BOM. ...


"..Wieso haben nur die Sonderzeichen zwei Bytes und nicht alle Zeichen?.."
weis ich nicht. ich hab utf nicht gemacht. dann geh mal davon aus, dass die php-function 7bit-ascii-zeichen speichert und sonderzeichen mit einem byte grösser gleich 0x80 beginnen. damit erkannt wird, dass das folgebyte noch zum buchstaben dazugehört.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (12-04-2005 um 17:10 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 13-04-2005, 11:25   #9 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Immer nur sagen "Geht nicht" gilt aber nicht.
In Flash muss man schon ein bißchen Kreativität zeigen

ActionScript:
  1. function isDoubleByteCharacter( ch){
  2.     var lv = new LoadVars();
  3.     lv[ch] = 0;
  4.     return lv.toString().length > 5;
  5. }
  6.  
  7. function calculateUTF8Length( str){
  8.     var result = 0;
  9.     for( var i=0; i<str.length; i++){
  10.         result += isDoubleByteCharacter( str.charAt(i)) ? 2 : 1;
  11.     }
  12.     return result;
  13. }
  14.  
  15. trace( calculateUTF8Length("abcöäü")); //9
  16.  


mfg r.

Geändert von bokel (13-04-2005 um 12:33 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 13-04-2005, 17:40   #10 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"..Immer nur sagen "Geht nicht" gilt aber nicht.."
sagt ja auch keiner. und sollte klar sein, das jeder immer nur seinen aktuellen, persönlichen wissenstand äussert.
sonst würde niemand mehr auf irgend eine frage antworten, denn alles kann theoretisch auch falsch sein. oder man dürfte nur noch mit 30.000 kbyte "kleingedrucktes" antworten, mit dem man jegliche rechtsansprüche von vornherein abblocken kann.

wie lange hast du denn an dem ding rumgedocktert? :-)))

---
ich erlaube mir den code zu vervollständigen, da es offensichtlich auch code mit mehr als 2 bytes gibt. (weiss nicht, ob die zwei letzten asiatische zeichen erhalten bleiben)
ActionScript:
  1. function isDoubleByteCharacter(ch) {
  2.     var lv = new LoadVars();
  3.     lv[ch] = 0;
  4.     trace(ch+" // "+lv.toString()+" // "+Math.floor(lv.toString().length/3));
  5.     return Math.floor(lv.toString().length/3);
  6. }
  7. function calculateUTF8Length(str) {
  8.     var result = 0;
  9.     for (var i = 0; i<str.length; i++) {
  10.         result += isDoubleByteCharacter(str.charAt(i));
  11.     }
  12.     return result;
  13. }
  14. trace(calculateUTF8Length("ab�?"));
ok, geht so nicht. dann z.b. mal von hier
http://www.yahoo.co.jp
zeichen kopieren und einsetzen.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (13-04-2005 um 19:45 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 14-04-2005, 10:02   #11 (permalink)
helpQLODhelp
 
Benutzerbild von bokel
 
Registriert seit: Feb 2002
Ort: Köln
Beiträge: 8.505
Zitat:
Zitat von hgseib
sonst würde niemand mehr auf irgend eine frage antworten, denn alles kann theoretisch auch falsch sein.
Ja, das sehe ich genauso. Ich finde es nur amüsant, wenn Sachen als absolut unumstößlich hingestellt werden.

Deine Erweiterung macht aber Sinn. Ich wusste gar nicht, dass es auch Zeichen mit mehr als zwei Bytes gibt. Wobei ich mir auch nicht sicher bin, ob es wirklich die UTF-Kodierung ist, die soviele Bytes braucht, oder die URI-Kodierung von loadVars.

mfg r.

Geändert von bokel (14-04-2005 um 15:16 Uhr)
bokel ist offline   Mit Zitat antworten
Alt 14-04-2005, 10:24   #12 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
oha wenn der bokel kommt.....

...aber nun gut wenn ich hier schon 'falsche Angaben' gemacht habe, dann hau ich hier nochmal ein paar Infos rein (eigentlich nur einen link)
Zitat:
Zitat von nickinicki
....
Wieso haben nur die Sonderzeichen zwei Bytes und nicht alle Zeichen?
Zitat:
Zitat von bokel
Ich wusste gar nicht, dass es auch Zeichen mit mehr als zwei Bytes gibt.
...utf-8 ist ein Folgeprodukt von utf-16, mit utf-16 hat man bereits versucht, alle Zeichen der Welt auf 2 Byte zu 'verteilen', aufgefallen ist dabei:
- daß bei 99% aller Zeichen eigentlich nur ein Byte reichen würde...
- daß für alle Zeichen der Welt auch 2 Byte nicht ausreichen...
deshalb hat man utf-8 entwickelt, funktionieren tuts mit Steuerbits, wie....hey wofür gibts wikipedia: http://de.wikipedia.org/wiki/UTF-8

Gruß

Alois
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-

Geändert von Alois (14-04-2005 um 10:26 Uhr)
Alois ist offline   Mit Zitat antworten
Alt 14-04-2005, 10:43   #13 (permalink)
angry > always
 
Benutzerbild von ingohill
 
Registriert seit: Jul 2001
Ort: NRW
Beiträge: 1.635
hi,

da das interne textformat von flash utf8 ist, besteht doch gar nicht die bewandnis, die inhalte zu de/kodieren, oder?

ansosten:
wie - des öfteren - erwähnt hilfe bei php finden.
__________________

on air: caliban | neaera | heaven shall burn | hatebreed | the agony scene
ingohill ist offline   Mit Zitat antworten
Alt 14-04-2005, 12:02   #14 (permalink)
Level up
 
Benutzerbild von Alois
 
Registriert seit: Jun 2001
Ort: Bocholt
Beiträge: 4.155
Zitat:
Zitat von ingohill
hi,

da das interne textformat von flash utf8 ist....
das war das Problem...
welches dann durch bokels Ansatz auch ohne php zu lösen ist!!!
einfach nochmal den thread durchlesen
__________________
-Spuckt mir auf den Stuhl, ich will im Grünen sitzen-
Alois ist offline   Mit Zitat antworten
Alt 14-04-2005, 16:31   #15 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
"..dass es auch Zeichen mit mehr als zwei Bytes gibt.."
laut norm ja eben nicht. in allen tabellen werden zeichen mit 2byte codiert. ich denke das ist irgendwo eine definition, wie die sache programmiertechnich umgesetzt wird.

erweitert irgendwo das allgemeinwissen. allein, mir fehlt der praktische nutzen dafür. was habe "ich" als flashprogrammierer davon?
dazu müsste uns wohl nickinicki verraten, was er mit diesem wissen anstellen will.

-------
"..daß bei 99% aller Zeichen eigentlich nur ein Byte reichen würde.."
wer hat den diese statistik gemacht? die amis? der hide-report wurde überwiegend in bordellen erstellt. sehr repräsentativ :-)

-------
"..daß für alle Zeichen der Welt auch 2 Byte nicht ausreichen.."
der gebildete chinese tut's nicht unter 50.000 schriftzeichen. zu bleisetzers zeiten hatten die keinen setztkasten, sondern: die chinesische mauer - so, jetzt ist das auch geklärt ;-)
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (14-04-2005 um 16:37 Uhr)
hgseib ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 08:14 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele