Avatar billede woodydrn Nybegynder
17. april 2002 - 14:33 Der er 3 kommentarer og
1 løsning

PHP, Flash, XML og Unicode

Davs ...

Jeg er ved at lave et script der skal parse XML til flash, denne tekst læses fra en MySQL database og kan være på alle sprog.

Jeg har lavet et hurtigt let program der gør dette:

----------------------------------------------
$dbh    = mysql_query("SELECT * FROM htmltext LIMIT 1");
$result = mysql_fetch_array($dbh);

printf("<?xml version=\"1.0\" encoding=\"UTF-8\"?>
<unicode>
  <menu>
    <text>".utf8_decode($result["text"])."
    </text>
  </menu>
</unicode>
");
----------------------------------------------

Teksten i databasen er også utf8_encode'ed og ser fint ud (i XML) hvis jeg inst. de rigtige sprog på min computer. Men i Flash MX ser det forkert ud, den skriver ikke de rigtige chars.

Nu har jeg læst og læst, prøvet flere forskellige encoders - php_mbstring.dll extensions. Det ser bare ud til utf8_encode gør dette forkert:

----------------------------------------------
$unicode = utf8_encode($text);

print "unicode: $unicode<br>\n";

$date = date("Y-m-d H:i:s");
mysql_query("INSERT INTO htmltext VALUES ( null, '$unicode', 1, 1, '$date' )");
----------------------------------------------

Alt virker egentlig fint nok, men den kan bare ikke vise det ordentligt! .... Flash coden:

----------------------------------------------
System.useCodepage = true;
var questionArchive = new Array();
myXML = new XML();
myXML.load("http://aspserver/navision/test/getunicode.php");
myXML.onLoad = retrieveXML;
stop();
----------------------------------------------

Jeg ved godt at System.useCodepage = true; ikke skal være der, men det virker hvis den er der. Men man skal kunne ændre sprog uden at skulle inst. nye ...

Det hele ligger på IIS, Win2k med PHP og MySQL ...
Avatar billede nikolajdu Nybegynder
17. april 2002 - 14:41 #1
Jeg har haft samme problem og kun fundet én løsning - Nemlig at kreére din Xml i eksterne textfiler, der så er UTF8 encodet.

muligvis hjælper følgende istedet:

$dbh    = mysql_query("SELECT * FROM htmltext LIMIT 1");
$result = mysql_fetch_array($dbh);
$teksten = utf8_decode($result["text"]);
$myXml ='<?xml version="1.0" encoding="UTF-8"?><unicode><menu><text>".$teksten."</text></menu></unicode>");
$xmlDu = utf8_decode($myXml);
printf($xmlDu)

/Nikolaj
Avatar billede woodydrn Nybegynder
22. april 2002 - 10:56 #2
det virkede heller ikke, jeg har dog fundet ud af noget andet
Avatar billede nikolajdu Nybegynder
22. april 2002 - 11:32 #3
som er?
Avatar billede woodydrn Nybegynder
21. april 2010 - 10:47 #4
pænt mange år efter... jeg lavede et c++ program der kunne executes og fixe xml
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester