Mehrsprachige Applikation mit DB-Anbindung

oaki

Erfahrenes Mitglied
Hi,

ich bin gerade dabei eine Applikation zuerstellen, bei der die Users Wörter in ihrer Sprache abspeichern können.

Ich hab also folgendes gemacht:
- DB erstellt
- Verbindung via AMFPHP
- Wort hochladen ermöglicht
- Wort auslesen ermöglicht

Wenn ich nun aber Special Chars eingebe wie ÇÜÄÖ und den Datensatz in einen List-Komponente ausgebe, werden diese nicht angezeigt, bzw. nur als Fragezeichen.

Kann mir jemand sagen auf was ich besonders achten muss wenn ich alle Zeichen (inkl. Japanisch, Chinesisch, Dänisch etc.) korrekt abspeichern und in Flash wieder ausgeben will?
 
Ja, ich denk schon :)
Also ich hab in der MySql DB bei Kollation einfach utf8_unicode_ci ausgewählt. Ist das richtig?
Wie ich das wieder als UTF-8 auslesen kann weiss ich leider nicht..
Muss ich da bei der Komponente was ändern?

Danke & Gruss
 
Hmm... sollte dann eigentlich gehen (soweit ich weiß, liegen Ergebnisse von Abfragen in dem Zeichensatz vor, in dem sie gespeichert wurden).

Tritt das Problem denn nur bei der Ausgabe in einer UI-Komponente (List-Control) auf, oder auch in einem herkömmlichen Textfeld?

Gruß
.
 
Das Problem tritt leider auch in Textfeldern auf.. Ich bin mir aber nicht sicher ob der Zeichensatz den ich ausgewählt habe auch richtig ist..? gibt ja auch utf8_general_ci usw.
 
Ich hab noch ein Test gemacht.
Wenn ich mit dataProvider.addItem( {label: "üäöÇÇ"} ); ein neues Element einfüge, da werden die Umlaute etc. richtig angezeigt, es muss also an der Datenbank liegen, oder am PHP Script das die Daten rausholt.. hmm.. Hat jemand weitere Vorschläge?
 
Hi,

sollte damit eigentlich nichts zu tun haben. Ich gehe davon aus, dass Du mindestens für Flash 7 exportierst und System.useCodepage nicht auf "true" hast?

Ich habe letzte Woche eine mehrsprachige (u.a. kyrillische Zeichen) Datenbankanwendung mit Flash erstellt und hatte keine Probleme damit, Unicode zu übertragen und darzustellen.

Vielleicht kannst Du mal einen SQL-Dump eines derartigen Datensatzes und den entsprechenden Ausschnitt des PHP-Scripts posten?

Gruß
.
 
also hier das sql dump:
Code:
CREATE TABLE `tbl_languages` (
  `id` int(11) NOT NULL auto_increment,
  `language` varchar(200) character set utf8 collate utf8_unicode_ci NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4 ;

-- 
-- Daten für Tabelle `tbl_languages`
-- 

INSERT INTO `tbl_languages` VALUES (1, 'English');
INSERT INTO `tbl_languages` VALUES (2, 'Deutsch');
INSERT INTO `tbl_languages` VALUES (3, 'Français');

und so lese ich die Datensätze per php aus:
PHP:
$arr = array();
		while ($current_entry = mysql_fetch_array($result)) {
			$arr[] = $current_entry;
		}

English und Deutsch wird richtig angezeigt, hingegen wird beim Français das Ç als eingerahmtes Fragezeichen angezeigt.
 
Wenn ich den Eintrag mit uft8_encode() enkodiere, gibt mir php folgendes aus:
Code:
Français

wenn ich mir das ganze in Flash ausgebe, steht nach wie vor das Fragezeichen.

Ich hab das Gefühl, dass Flash alle Texte als uft8 dekodiert, wenn nichts anderes angegeben wurde. Weil, wenn ich in PHP den Eintrag mit utf8_decode dekodiere, dann erhalte genau wie bei Flash ein Fragezeichen an exakt der gleichen Stelle.

Irgendwie scheint Flash den Text nicht richtig aus der DB lesen zu können, oder täusche ich mich?
 

Neue Beiträge

Zurück