Avatar billede sjh Nybegynder
23. februar 2008 - 14:43 Der er 15 kommentarer og
1 løsning

utf8_decode() decode ikke alle tegn

Jeg har lidt problemer med utf8_decode() den decode ikke alle tegn.

Jeg har fundet nogle af de tegn den ikke tager med

    $content = str_replace('”', '”',$content);
    $content = str_replace('…', '…',$content);
    $content = str_replace('–', '-',$content);
    $content = str_replace('’', '’',$content);
    $content = utf8_decode($content);

Så jeg ville bare høre om der ikke findes en liste over alle de tegn utf8_decode() ikke tager med..

Eller måske findes der en anden funktion som kan klare det ?
Avatar billede olebole Juniormester
23. februar 2008 - 15:42 #1
<ole>

Hvorfor bruger du ikke bare utf-8 som tegnsæt? iso-8859-1 er i realiteten forældet - og hvis du bare bruger utf-8 overalt, har du ingen problemer med specialtegn  ;o)

/mvh
</bole>
Avatar billede sjh Nybegynder
23. februar 2008 - 15:55 #2
Ja det ved jeg ikke, men det er noget xml-file som jeg skal have ud.. og jeg får bare ikke æøå og nogle tegn rigtigt ud..

Det er sådan noget jeg får ud hvis jeg ikke bruger utf8_decode()

Med sylespids akkuratesse og på uforfærdet ærlig vis beskrives de...

xml-filen benytter : encoding="UTF-8"
Avatar billede sjh Nybegynder
23. februar 2008 - 16:00 #3
Jeg fandt den her som ser ud til at virke hvis det skal vises i html :
http://dk.php.net/manual/da/function.utf8-decode.php#75941
Avatar billede olebole Juniormester
23. februar 2008 - 16:02 #4
Jamen, hvis din side (og evt. database) bruger utf-8, har du ingen problemer med den slags.

XML-filen bruger et tidssvarende tegnsæt, og det må du gå udfra, flere og flere vil gøre i fremtiden. Hvis du også skifter, vil du ikke støde på problemer med specialtegn  =)

F.eks. kan du ikke encode en URL i JavaScript, hvis tegnsættet er iso-8859-1 ... kun hvis det er utf-8. ANSI er en død sild i webkode - uagtet, hvor meget kunstig åndedræt, man forsøger at give  ;o)
Avatar billede sjh Nybegynder
23. februar 2008 - 16:10 #5
det vil sige at jeg skal udskifte alle dem her i min html

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

med

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

??
Avatar billede sjh Nybegynder
23. februar 2008 - 16:15 #6
og jeg er da heller ikke sikker på hvad Apache / MySQL bruger og begynder jeg og smide det ind som utf-8 få jeg måske ikke teksten rigtigt ud igen.. ??
Avatar billede olebole Juniormester
23. februar 2008 - 16:22 #7
Apache / MySQL bruger det, de er sat op til.

Hvad angår filer, skal de være gemt som utf-8 (tjek, hvad f.eks. Notepad vil gemme dem som, hvis du åbner dem dér).
Derudover skal du naturligvis bruge en utf-8 meta, som du selv er inde på.

Så skal du tjekke, hvad din server sender dokumenterne som:
    http://validator.w3.org/#validate_by_uri+with_options

- husk flueben i 'Verbose Output'.
Hvis din server ikke sender dokumenterne som utf-8, skriver du denne aller øverst i dokumenterne:
    header("Content-Type: text/html; charset=utf-8");

Sidst - men ikke mindst - skal du sørge for, dine kollationer i MySQL passer til tegnsættet (tjek/ret i phpMyAdmin)
Avatar billede olebole Juniormester
23. februar 2008 - 16:23 #8
Header'en bruger du naturligvis kun, hvis du ikke har adgang til at rette i serveropsætningen  ;o)
Avatar billede sjh Nybegynder
23. februar 2008 - 16:28 #9
Hæ Hæ... jeg tror jeg springer over den løsning.. har ikke tid til at lave om på alt det jeg har kørende.. så jeg må bare have noget html entities med i min data..

Smider du ikke lige et svar..
Avatar billede olebole Juniormester
23. februar 2008 - 16:50 #10
En database er til data ... ikke til markup. At gemme markup i en DB kan _kun_ skabe problemer  :)

Problemet er, at webkodning har en meget flad indlæringskurve, hvilket betyder, at disciplinen ganske hurtigt kan læres udfra webtutorials.
Sagen er bare, at forfatterne af disse meget ofte har deres egen viden fra tutorials - skrevet af folk, der har deres viden fra tutorials, som er skrevet af folk, der .... osv, osv. Derfor er skidt/misforstået kodestil næsten umulig at udryde  :o|
Avatar billede olebole Juniormester
23. februar 2008 - 16:53 #11
- og pointen var, at skræmmende mange tutorials viser eksempler, hvor man gemmer markup i DB, laver ineffektive SQL-kald (f.eks. med brug af *, selvom kun få felter i rækken skal bruges), sjusker med tegnsæt og indeholder utroligt mange andre fejl og uhensigtsmæssigheder  ;o)
Avatar billede sjh Nybegynder
23. februar 2008 - 17:04 #12
Ja det har du nok rat i.. men når 99.9% af den data jeg gemmer i min mysql skal alivel ud som html.. Jeg ved godt at det bliver svært at lave en søginig på de html entities, men det må jeg leve med.

Mange tak for hjælpen.
Avatar billede olebole Juniormester
23. februar 2008 - 17:08 #13
Selvtak - og du må endelig ikke forstå mine kommentarer som et personligt angreb!

Hvad vil du f.eks. gøre, hvis du bliver træt af dit design? Så skal du ind og rette i tusindvis af DB-posts. Der er mange gode årsager til ikke at lægge markup i DB ... der er næppe nogen gode årsager til at gøre det  :)

- og tak for points  ;o)
Avatar billede sjh Nybegynder
23. februar 2008 - 17:15 #14
Nej ved godt det ikke er personligt angreb.. du prøver bare at få mig til at forstå at det ikke er serligt smart det jeg har gang i :D

Men jeg mener bare at have et par. "html entities" (&#XXXX;) i min database kan vel ikke smadre mit design.. Men ja der skal ikke for meget html i database før det kan gå galt. :-)
Avatar billede olebole Juniormester
23. februar 2008 - 17:19 #15
- så nærmer vi os i truende grad enighed!  ;D
Avatar billede sjh Nybegynder
23. februar 2008 - 17:38 #16
hæ hæ :D
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