Nu skal vi til det igen. Hvorfor kan jeg ikke trække data op fra en database (MYSQL)..konvertere det til en xmlfil on the fly i ASP og dynamisk loade det ind i flash mx 2004 uden at det fremstår som ren vollapyk. æøå fremstår som firkanter.
Ja.. jeg har prøvet med system.useCodepage = true, og ja min xml header er:
<?xml version="1.0" encoding="UTF-8"?>.
Ja.. jeg har prøvet med Server.UrlEncode(variabel) ind i flash og unescape(variabel) inde i flash og lige meget hjælper det. Jo jeg har indsat æøåÆØÅ i autofil under character options for det tekstfelt i flash hvor tingene udskrives, men det virker ikke. (forresten hvorfor kan man kun lave autofil for visse fonttyper.. arial kan ikke anvendes. mærkeligt)
Er det noget med at mysql fucker det hele op fordi de ikke unicoder eller hvad sker der. Måske er løsningen at skifte database til MSSQL.. På DR hvor vi bruger MSSQL har jeg ikke oplevet de prblemer.. her virkede system.codebase = true. Men det gør det ikke her og jeg ønsker heller ikke at bruge denne metode da den som bekendt ikke virker på alle maskiner.
Jeg kan godt få det til at virke med at bruge: variabel = replace(variabel, "ø", "ø") i ASP og inde i Flash looper jeg gennem teksten og udskifter htmlkoden for ø med den tilsvarende Charcode.
z = variabel.indexOf("ø");
if (z > 0){ while (z > 0) { //found++; t1 = variabel.substr(0, z); t2 = variabel.substr(z + 6); variabel= t1 + String.fromCharCode(248) + t2; z = variabel.indexOf("ø", z);
} } .. Men det holder jo ikke i længden når man går dot.com med en service hvor også japanerne skal kunne skrive meningsfyldt i vores applikation.. så skal hele det asiatiske alfabet programmeres ind og der er vist 25000 tegn.. forget it.
Altså hvem kan cracke vejen fra MYSQL via ASP til XML til Flash MX 2004 så alle specialtegnene står rigtigt i alle sprog. Jeg er så frustreret at I kan tage alle mine point hvis I løser problemet.
System.useCodepage=true handler om, at du kan angive at Flash playeren skal opfatte alle tegn i det lokale tegnsæt, som filen afvikles på. På en almindelig, dansk computer vil det være Latin 1 eller ISO-8859-1 tegnsættet. Hvis dette er slået til, kan du KUN bruge Latin 1 tegnsættet og din fil ser kun rigtig ud på computere, som bruger Latin 1. Altså stort set kun i Vesteuropa.
Den RIGTIGE løsning er at have useCodepage slået fra og i stedet for bruge UTF8 encoding af tegn. Og MySQL kan fint indeholde tegnene, den kan jo bare gemme dem almindeligt Latin 1 encodede og så kan man fra sin middleware (asp gætter jeg på) konvertere til UTF8 encoding.
Altså kort og godt, enten bruger du System.useCodepage=true og Latin 1 eller UTF8.
Tak. Det var en fin forklaring af hvad System.useCodepage=true er. Som du ser har jeg også valgt at encode i utf8 og slå System.useCodepage=true fra. Min xml-header er <?xml version="1.0" encoding="UTF-8"?>.. og det er vel den rigtige måde at encode til UTF8 går jeg ud fra.
At angive hvilken encoding xml-skemaet er skrevet med er ikke det samme som at encode det.
Encoding er en transformation af tegnene. XML headeren er blot en instruktion til modtageren om, i hvilket format tegn er angivet, så det kan parse dem korrekt.
Selve utf8 encoding skal lave manuelt. Jeg ved ikke, om ASP har en funktion til det, men i PHP skriver man bare utf8encode() og så spiller det.
Med Session.CodePage = 65001 og <?xml version="1.0" encoding="UTF-8"?> i XML headeren ser det bedre ud. æøå og ´` kommer nu rigtigt til syne, hvis man vel at mærke er på Win2000.... på en XP dur det ikke.. æøå kommer ikke frem.
Er den der utf-8 encodning browser afhængigt eller hvad. Hvordan løser man det problem?.
Endvidere vises dobeltapostrof (") stadig forkert under Win2000.
Synes godt om
Slettet bruger
20. september 2004 - 10:07#6
Jeg lavede en test med et 'almindeligt' loadVars, altså ikke noget XML output, hvilket vil sige heller ikke med <?xml version="1.0" encoding="UTF-8"?> og der virker det fint på XP.
Bruger du [CDATA] i din XML ??
<myNode><![CDATA[Denne tekst indeholder specialtegn som '<>§!"#¤' osv.]]></myNode>
Nå.. det var da interessant. Jeg må indrømme at jeg har overvejet at gå over til Loadvars metoden istedet for at loade ind via XML.
Nej jeg bruger ikke CDATA metoden, jeg har forsøgt tidligere uden resultat, men måske skulle jeg forsøge igen.. hvad er det egentlig helt præcis den gør ved data mellem dens brackets????.
Synes godt om
Slettet bruger
20. september 2004 - 10:18#8
Uha - nu skal jeg passe på at jeg ikke kommer ud på tynd is - hvad den præcis gør ved Barklund sikkert - jeg ved bare at den anvendes steder hvor specialtegn skal vises korrekt ;)
Jeg forsøgte med CDATA men den medfører at almindelig apostrof ' nu ikke vises korrekt. Det er jo også lidt ulogisk at man først encoder med Session.CodePage = 65001 for at iklæde data den rigtige utf-8 encodning og så efterfølgende bruger man cdada til at ignorere encodningen.
Men jeg har nu en helt ok løsning med: Session.CodePage = 65001 hvor jeg encoder mine data til utf-8 inde i asp'en og <?xml version="1.0" encoding="UTF-8"?> hvor jeg fortæller flash at data skal fortolkes i utf-8 og det virker pånær "" som jeg så laver en specialløsning for ved at udskifte den med den rigtige charcode inde i Flash.
Det testes på livet løs på andre platforme. Mozilla virker som den skal også. Blot måske et problem med XP, men det ved jeg meget mere om når dagen er slut.
Hey ingemann1767> Jeg har præcis samme problem, så tænkte hvad har du fundet ud af? -hvordan gør man det? Jeg henter data både fra loadvars og xml..
Er det et stort arbede?
På forhånd tak, Mads
Synes godt om
Ny brugerNybegynder
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.