ASCII vs Unicode

Status
Niet open voor verdere reacties.

jasperblij

Gebruiker
Lid geworden
6 jan 2009
Berichten
16
Hallo mensen,

Ik heb een probleem:
Op mijn website (gemaakt in flash CS4, Actionscript 2) heb ik een lijstje van iets staan (dynamische inhoud dus). Dit lijstje maak ik zelf in een .txt bestandje die ik dan laat converteren door een klein zelfgeschreven programmaatje (VB 6) die dan de CR + LF converteerd naar alleen een CR (want anders krijg je twee "enters" op mijn website, lang leve de verschillende platforms:confused:!).
Dit geconverteerde bestand zet ik dan online om het vervolgens in te laten lezen door mijn website.

Helemaal perfect, MAAR:
Als ik tekens als ç in het (eerste) tekstbestand zet krijg ik een chinees teken :p op mijn website...
Ik weet dat dit het verschil tussen ASCII en Unicode is. Als ik namelijk het gegenereerde bestand open in kladblok en vervolgens opsla met als indeling Unicode, doet mijn website het wél (ook met de ç).
Maar om dit elke keer te doen: daar ben ik veel te lui voor :D.

Dus...
Er zijn waarschijnlijk twee oplossingen:
1. Laat dat kleine programmaatje van mij het opslaan in unicode.
2. Laat mijn website het (ASCII) bestand lezen en interpreteren als ASCII.


Oplossing 1 heb ik trouwens al geprobeert, maar zonder succes:
Ik heb de 'string' die ik wilde opslaan geconverteerd naar unicode en dan in een byte array gezet en vervolgens opgeslagen. Helaas leest mijn website het hele bestand dan helemaal niet meer!

Dus OF ik moet een beter manier hebben om het bestandje op te slaan OF mijn website moet het bestand lezen als ASCII...
(Ik lees met mijn website het bestandje nu trouwens in met de functie LoadVars).

Veel denkplezier:mad:
Jasper Bussemaker

PS: De website: www.utr-online.com/wcg (in het lijstje met de actieve sectors zie je als het goed is helemaal aan het einde Curaçao staan, er staat nu een bestand online dat ik zelf heb opgeslagen)
 
Unicode is backwards-compatibel met ASCII. Het probleem dat je hebt komt omdat Windows standaard een eigen code tabel gebruikt die in de Windows wereld ANSI wordt genoemd en die is ook backwards-compatibel is met ASCII. Vandaar dus dat als je ASCII only tekens gebruikt het goed gaat en wanneer je niet ASCII tekens gebruikt het niet meer goed gaat.

Om het probleem te verhelpen zul je moeten zoeken naar iets dat ANSI omzet in Unicode. Unicode is eigenlijk alleen een standaard waarin elk teken van elke taal een code heeft gekregen en die drie character-encodings definieert om die codes op te slaan in bytes, namelijk UTF-8, UTF-16 en UTF-32. Omzetten naar Unicode kan dus eigenlijk niet wel naar UTF-8, UTF-16 of UTF-32.

De meest simpele oplossing is echter om je tekst editor in te stellen om standaard in Unicode op te slaan. Een prachtige kladblok vervanger die dit kan is bijvoorbeeld notepad2. Ze zult even moeten testen of een BOM (in notepad2 signature) nodig is.

Oplossing 1 is mogelijk alleen gaat het om het omzetten van ANSI in Unicode. Je zult even moeten uitzoeken of die functie die je gebruikte UTF-8 of UTF-16 produceert en er eventueel een BOM voor plakken voor je de byte array weg schrijft. UTF-8 BOM bestaat uit de drie bytes 0xEF 0xBB 0xBF in die volgorde en voor UTF-16 is dat 0xFF 0xFE of 0xFE 0xFF afhankelijk of little endian of big endian UTF-16 wordt geproduceerd (gewoon beide even proberen). Het verschil tussen UTF-8 en UTF-16 is makkelijk te herkennen. Als je het bestand opent in een hex editor zie je bij UTF-16 voor elk ASCII teken twee bytes staan terwijl UTF-8 dit in een byte doet.

Oplossing 2 is onmogelijk aangezien een niet ASCII teken nooit als een ASCII teken gecodeerd kan worden. Ik weet niet of flash ANSI ondersteunt aangezien dit een Microsoft dingetje is. Als je echter op de toekomst voorbereid wilt zijn zou ik ANSI en de ISO-8859-* standaarden links laten liggen en je concentreren op Unicode.

Succes
 
Ondertussen is het probleem opgelost...

Ik heb de website opnieuw gemaakt in HTML, en het bestandje waarin al die tekens staan is nu dus gewoon html.

Alleen hoop ik dat mac computers het een beetje goed kunnen lezen.

www.utr-online.com/wcg

Het gaat om dat lijstje onderaan.

Jasper
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan