Avatar billede ahnfelt Nybegynder
23. november 2004 - 14:28 Der er 5 kommentarer

Brug af unicode (UTF-8 ell. UTF-16) eller noget tilsvarende

Jeg arbejder på en side, der skal oversættes til mange forskellige sprog, deriblant dansk, engelsk, kinesisk og russisk. Da disse sprog har hvert sit tegnsæt, kan det ikke bare gemmes som normal tekst. Jeg bruger i forvejen en konverteringsfunktion, der bytter tegn såsom ÆØÅ ud med den tilsvarende entity (f.eks. æ for æ).

Dette virker bare ikke med f.eks. kinesiske tegn, eller gør det? Findes der enteties for ethvert tegn? I så fald ville det ikke være så slemt at gemme alle tegnene entity by entity, selvom det fylder fire gange så meget.

Jeg har talt med en der foreslog mbstring og iconv, men han havde ikke selv videre erfaring med det, og det skal jo også kunne gemmes i mySQL databasen, ikke at forglemme.

Så hvis der er en, der har erfaring med at bruge PHP til at gemme og hente mange forskellige sprog (med forskelligt tegnsæt) fra en mySQL database, vil jeg meget gerne høre fra ham/hende.

På forhånd tak
Joakim
Avatar billede coderdk Praktikant
23. november 2004 - 15:33 #1
Jeg tror du er nødt til at sætte charsettet for hvert sprog - Det er sådan apps som f.eks. Coppermine Gallery gør ( http://coppermine.sf.net/ )...
Avatar billede ahnfelt Nybegynder
23. november 2004 - 20:06 #2
Tak for kommentaren, men det lader sig ikke gøre sådan som systemet er skruet sammen på nuværende tidspunkt... hvis der er nogen, der har en anden løsning, vil jeg meget gerne høre den!
Avatar billede learner Praktikant
11. december 2005 - 14:30 #3
Har du fundet ud af det? Jeg har lidt erfaring med det.
Avatar billede ahnfelt Nybegynder
11. december 2005 - 16:25 #4
Tak, jeg løste problemet ved at oversætte hver karakter der ikke findes i det engelske alfabet (a-z 0-9 plus nogle andre tegn) til den tilsvarende unicode i html-formatet &#xxx; hvor xxx er UTF-16-koden (dette gjorde jeg med javascript tilknyttet submit-knappen på formen hvor teksten skulle skrives ind). Dette fungerer ganske godt med de vestlige sprog, der lægger sig op ad det engelske alfabet. Til gengæld bliver siderne en del større end nødvendigt når der er tale om kinesiske tegn mm., idet størstedelen af teksten kommer til at bestå af &#...; (som jo er en hel del længere end et enkelt tegn).

Løsningen er altså ikke optimal, og ikke fuldt ud testet med de asiatiske tegnsæt, så hvis du har en alternativ måde ville det være meget interessant at høre det :) Ikke mindst for eventuelle andre, der ender i samme situation!
Avatar billede learner Praktikant
11. december 2005 - 23:04 #5
Jo, jeg kører alt i utf-8 (også kaldet unicode sommetider)
Så er jeg fri for at ændre på tegnene osv.
jeg skriver direkte ud, og direkte til databasen uden at bearbejde tegnene. og henter direkte fra databasen i utf-8.
Det kræver dog en del arbejde med at opsætte systemet. Og det skal helst være en af de nyeste versioner af mysql, phpmyadmin og php du kører. Så alt efter om du hoster selv eller køber det ved et firma, så kan det være at der skal opgraderes/ændres noget.
Men hvis det kører fint som det er, så er der jo ik nogen grund til at kaste sig ud i en masse :o)
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