Flashhilfe.de - Flash Community

Sonderzeichenkodierung nach UTF8 in Flash [Flash CS3]

 


AntwortenRegistrieren Seite1  

cellardoor#1
Benutzerbild von cellardoor
Beiträge: 43
Registriert: Sep 2007

13.11.2008, 15:10

Hallo,

Sonderzeichen und XML sind in diesem Forum ja Themen, die vermutlich bis zum geht nicht mehr durchgekaut wurden. In den meisten Fällen geht es aber darum, Sonderzeichen in Flash einzulesen.

Ich möchte aber Umlaute aus Flash herausbekommen.

Ich habe ein Formular mit Textfeldern. Nach Klick auf den Absende-Button wird ein XML-Objekt aus den Inhalten gebildet und an eine aspx-Datei (in C#) per XML.sendAndLoad() gesendet. Dort wird der Inhalt ausgelesen und via UTF-8 kodierter E-Mail weiterversendet.

Wenn ich die Sonderzeichen unbehandelt in das Flash-XML-Objekt schreibe, erhalte ich in der E-Mail kryptische Zeichen.

Also möchte ich in Flash (Actionscript 2.0) die Formularinhalte nach UTF-8 kodieren.

Nach längerem Suchen habe ich folgenden Code gefunden:

ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
var Utf8 = {

    // public method for url encoding
    encode : function (string) {

        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // public method for url decoding
    decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }
}


Für die Sonderzeichen äöüé funktioniert das Skript auch. Nicht aber für die Zeichen ÄÖÜß.

Kann mir vielleicht jemand sagen, weshalb?

Vielen Dank, schon mal im Voraus.

Cellardoor.
abgemeldeter Benutzer#2
13.11.2008, 17:39

schau ma wie php das empfängt...
liegts wirklcih 100% an flash oder könnte php fehler beim absenden haben ?!?
ich hatte immer probleme mit php direkt die texte von foren o.ä. zu speichern (mysql database)
und musste ja erst immer encoden (urlencode)
speicher einfach ma in eine textdatei das, was empfangen wird und schau ma obs richtig is...
wenn nicht, könntest du mit flash auch alle ÄÖÜß replacen mit keine ahnung was (z.B. {ä_GROSSBUCHSTABE}) und später wirds von php wieder zurückersetzt...
cellardoor#3
Benutzerbild von cellardoor
Beiträge: 43
Registriert: Sep 2007

Themenautor/in

14.11.2008, 08:14

Hallo FirePanther,

danke erst einmal für Deine Antwort.

ich glaube nicht, dass es (in meinem Fall c#, nicht php, aber das dürfte erst erst einmal egal sein) am Server falsch erkannt wird.

Wenn ich per trace überprüfe, wie die Werte ersetzt wurden erhalte ich folgende Ausgabe:

Ä-Ä
Ö-Ö
Ü-Ü
ü-ü
ä-ä
ö-ö
ß-ß

Es sieht so aus, als würden die problematischen Zeichen immer mit dem gleichen Zeichen kodiert werden.

Am Server werden diese Zeichen als umgekehrtes Fragezeichen interpretiert. Dies erscheint auch wenn ich die Zeichen in einer Textdatei abspeichere.

Und das vorher mit Flash replacen ist sicherlich möglich. Was ist aber mit nicht Ascii-konformen Zeichen anderer Sprachen... Also eine Lösung für das derzeitige Problem aber nicht langfristig.

cellardoor
Werbung
nicht sichtbar bei eingeloggten Mitgliedern
badskill#4
Benutzerbild von badskillFlashhilfe.de Moderator
Beiträge: 5285
Wohnort: Bernau (bei Berlin)
Registriert: Nov 2002

14.11.2008, 11:07

Schau dir mal
ActionScript:
1escape
an.
Vielleicht wäre das eine Lösung.
Sebastian#5
Benutzerbild von SebastianFlashhilfe.de Moderator
Beiträge: 6980
Wohnort: München
Registriert: Jan 2002

14.11.2008, 11:18

@cellardoor
Flash arbeitet komplett in UTF-8.

Kann es sein das Du irgend wo:
ActionScript:
1System.useCodepage = true;

stehen hast?

Auszug aus der AS2.0 Reference:
    * When the property is set to false, Flash Player interprets external text files as Unicode. (These files must be encoded as Unicode when you save them.)
    * When the property is set to true, Flash Player interprets external text files using the traditional code page of the operating system running the player.

Default ist false.

Ansonsten sollte dir, wie schon gesagt, escape(); weiterhelfen... Schau Dir auch mal die Ausgabe mit Charles oder "Live HTTP Header" an. Dann siehst Du was an Deinen Server gesendet wird.
Flex Freelancer || Flashhilfe @ Twitter || XING Profil
Geändert von Sebastian am 14.11.08 um 11:21 Uhr
cellardoor#6
Benutzerbild von cellardoor
Beiträge: 43
Registriert: Sep 2007

Themenautor/in

03.12.2008, 16:32

Hallo Sebastian,

es stand an einer Stelle noch useCodePage = true. Dies habe ich entfernt, und alles läuft wie gehabt.

Vielen Dank für die Anregung.
Werbung
nicht sichtbar bei eingeloggten Mitgliedern1&1 Webhosting

AntwortenRegistrieren Seite1  

Schnellantwort

Du musst registriert sein, um diese Funktion nutzen zu können.

 
Ähnliche Beiträge zum Thema
Partner Webseiten: art-and-law.de  DesignerInAction.de   Designnation.de   Mediengestalter.info   php-resource.de   phpforum.de   phpwelt.de   Pixelio.de   Scubacube.de   Tutorials.de

Haftungsausschluss   Datenschutzerklärung   Hier Werben   Impressum
© 1999-2014 Sebastian Wichmann - Flashhilfe.de