04. januar 2004 - 18:01Der er
16 kommentarer og 1 løsning
Streng encoding/decoding m System.out.println
Jeg bruger et projekt som kan læse Ogg comments fra Ogg filer. (Kommetarer i et lyd format, såsom title, kunstner mm.) Kommentaren er encoded med UTF-8. Projektet indeholder en klasse, som har en funktion, som giver mig titlen. Dvs. jeg får en Java streng. Den skrive jeg ud på skærmen (i en cmd boks, under windows 2000) og her ser jeg at æøå er ødelagt. Dvs de fylder 2 tegn. Kan jeg hermed konkluderer at projektet ikke decoder rigtigt? Eller kan fejlen ligge et andet sted? Hvis jeg selv udskrive æøå går det fint!
Selv er jeg næsten overbevist át der må være fejl i projketet, men det undre mig meget da det er fra http://www.jcraft.com/jorbis/. De må da have styr på det....
Projektet decoder højst sandsynligt med US-ASCII hvor alle tegn fylder 2 bytes; i UTF-8 fylder specieltegn nemlig 4 bytes. Prøv at led efter steder i koden, hvor "US-ASCII" er repræsenteret, f.eks. minString.getBytes("US-ASCII");
Det er ikke det jeg spørger om. Lad os nu sige jeg ikke har adgang til koden. Kan jeg regne med der er en fejl, eller kan fejlen ligge et andet sted?
Fylder US-ASCII ikke bare en byte p. tegn? Det kan også være de bruger iso-859-1. jeg er egentlig ligeglad, jeg skal bare finde ud af om jeg kan bruge deres projekt til noget.
Ok, jeg er næsten overbevist om at de anvender US-ASCII. Det er ikke en fejl, men har du ikke koden, må du leve med det. Da det ikke er et dansk projekt, kan du ikke regne med understøttelse af danske tegn. Ingen former for ASCII-tegnsæt understøtter danske tegn, og er samtidig et hyppigt anvendt tegnsæt...
Kommentaren skal i følge standarden ligge i UTF-8 i en Ogg fil. Det gør mine kommetarer også. Nu bruger jeg et projekt, som returnere en streng (F.eks titlen på en sang). Når denne streng udskrives til skærmen er den ikke rigtig. Udskriver jeg derimod System.out.println("æøå") så går det fint. CMD box'en kan godt altså godt vise ÆØÅ. Men den Java streng jeg modtager, er vel ødelagt, da projektet åbenbart ikke håndtere UTF-8. Eller hvad?
Det undre mig meget, hvis de har lavet en fejl, for de har jo også lave en Ogg decoder, som jeg er lidt mere omfattende.
Dit eksempel viser jo at ÆØÅ godt kan konverteres frem og tilbage. Men kan man altid regne med dette? Hvad med f.eks et eller andet kinesisk tegn på 4 bytes?
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.