Avatar billede fedtoere Praktikant
08. februar 2008 - 12:24 Der er 5 kommentarer og
1 løsning

Speciel tegn: Tegnsæt problem, måske UTF-8 og UTF-16 problem

Jeg roder lidt med et program der sender og modtager beskeder fra en server via en protokol, generelt virker dette godt.
Nu har jeg fået det problem at når jeg tilgår en anden server så får jeg tekstegn som dem angivet i første række:

Ã.    Å    ASCII (dec)=197
Ã,    Ä    196
Ã-    Ö    214
Ã¥    ä    228
ä    ö    246
É    é    233

Tegn i anden række er dem jeg ønsker at vise (benytte).
Den tredje række er blot ascii tegnsæt værdien for de i anden række karakterer.

Når jeg ser på min første række, så ser det ud som om at jeg modtager noget i 16 bit og det jeg ønsker at vise blot er i 8 bit (ASCII).
Er første række mon fra UTF16 tegnsættet ?!
For at løse dette skal jeg som punkt 1 kende til forskellen på de forskellige tegnsæt og kunne vurdere hvilket tegnsæt første række tilhører.
Når dette er kendt kan jeg vurdere hvordan jeg så konverterer tegnene og løser mit problem.
Avatar billede erikjacobsen Ekspert
08. februar 2008 - 14:13 #1
Det første ligner UTF-8, det andet ISO-8859-1.
Avatar billede tjacob Juniormester
08. februar 2008 - 15:24 #2
Selvom det umiddelbart lyder lidt misvisende kan UTF-8 sagtens indeholde flere end 8 bit pr karakter:
Op til 4 bytes = 32 bit. Se her: http://en.wikipedia.org/wiki/UTF-8

Mht til dit spørgsmål: Det er umuligt ud fra teksten/karaktererne alene at bestemme hvilken encoding der er benyttet med 100% sikkerhed.

Man kan kigge på BOM-karakterer (Byte Order Mark) og alt muligt andet, men det er ikke alle encodings der har disse ting (feks. har ISO-8859-1 ikke).

Du er nødt til at kigge på serveren eller protokollen hvis du skal bestemme encodingen med sikkerhed. Hvordan det så gøres aner jeg ikke ;)
Avatar billede fedtoere Praktikant
20. juni 2008 - 13:56 #3
Tak for hjælpen.
erikjacobsen og tjacob hvis i ligger svar får i point begge to.
Avatar billede erikjacobsen Ekspert
20. juni 2008 - 14:11 #4
Ingen point til mig, tak.

Http-protokollen indeholder angivelse af tegnsæt. Nogle browsere gætter, hvis de ikke får oplyaningen.

Den protokol du nævner har måske ikke denne mulighed, men så skal de 2 kommunikerende parter blot enes på forhånd.
Avatar billede tjacob Juniormester
20. juni 2008 - 21:42 #5
Ingen point til mig heller. Det var blot en uddybende kommentar, og den løste jo ikke dit problem......
Tag points selv og luk ;)
Avatar billede fedtoere Praktikant
22. juni 2008 - 01:51 #6
Ok erikjacobsen og tjacob, jeg takker.
Løsningen var at gennemgå regelsættet for de forskellige former for unicode. Ud fra disse kan man se forskellen i nogle enkelte bit som fortæller hvor mange byte karakteren bruger.
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
Kurser inden for grundlæggende programmering

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