|
| Postgresql og client encoding Fra : Martin Kaltoft |
Dato : 11-04-06 13:09 |
|
Hejsa
Jeg har en PHP app hvor jeg bruger postgresql som DB, jeg har dog et
problem.
Når jeg indsætter data, og viser det på siden bliver de danske tegn (æøå)
vist forkert. Serveren kører med UNICODE, og client_encoding er også sat
til unicode. Jeg har så prøvet at sætte client_encoding til LATIN1, men så
får jeg at vide at den ikke kan konvertere fra UTF-8 til LATIN1...
Når jeg ser database indholdet i phpPgAdmin, ser alle tegn ud som de skal,
så PHP kan jo godt vise det rigtigt, men hvordan?
--
Med venlig hilsen
Martin Kaltoft
| |
Michael Rasmussen (11-04-2006)
| Kommentar Fra : Michael Rasmussen |
Dato : 11-04-06 14:03 |
|
On Tue, 11 Apr 2006 14:08:30 +0200, Martin Kaltoft wrote:
>
> Når jeg ser database indholdet i phpPgAdmin, ser alle tegn ud som de
> skal, så PHP kan jo godt vise det rigtigt, men hvordan?
I alle dine php-sider, hvor der genereres html, skal du have følgende
tilføjet i header elementet:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Da du selvfølgelig laver validerende html! har du fået dine sider
valideret ved http://validator.w3.org, og burde derfor være blevet
advaret om manglende charset angivelse.
--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917
| |
Martin Kaltoft (11-04-2006)
| Kommentar Fra : Martin Kaltoft |
Dato : 11-04-06 15:37 |
|
> I alle dine php-sider, hvor der genereres html, skal du have følgende
> tilføjet i header elementet:
> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Jeg har dette nu: <meta http-equiv="Content-Type" content="text/html;
charset=iso-8859-1" />
Skifter jeg til utf-8 ændrer det ikke noget.
> Da du selvfølgelig laver validerende html! har du fået dine sider
> valideret ved http://validator.w3.org, og burde derfor være blevet
> advaret om manglende charset angivelse.
Det er checket med validatoren, og min iso-8859-1 validerer også.
Jeg har i øvrigt også svært ved at tro at det er på clientside at problemet
er, da tegnene også er forvrænget i HTML-koden, så det er altså det
postgresql leverer der er problemet.
Vil man i øvrigt se problemet in action er siden her:
< http://www.ebz.dk/index.php?category=10>
--
Med venlig hilsen
Martin Kaltoft
| |
Michael Rasmussen (11-04-2006)
| Kommentar Fra : Michael Rasmussen |
Dato : 11-04-06 16:43 |
|
On Tue, 11 Apr 2006 16:37:12 +0200, Martin Kaltoft wrote:
> Vil man i øvrigt se problemet in action er siden her:
> < http://www.ebz.dk/index.php?category=10>
Jeg kan se, at dit charset stadigvæk er iso-8859-1. Hvis jeg tvinger min
firefox til at anvende utf-8, fremvises teksten korrekt. Hvilken browser
benytter du? Hvis det er IE, kan den være vanskelig at overtale til at
anvende andet end win-1251. For at det skal virke, skal du være helt
sikker på, at du tvinger IE i standard complaince mode. Dette kan du
sikre dig, hvis de første 2 tegn i dine html-filer er følgende:
<! - efterfulgt af korrekt doctype. Når jeg fremviser din side i
html-mode, kan jeg se, at du har indsæt en tom linje først i dokumentet,
hvilket får den konsekvens, at IE kører i quirks mode.
Altså:
1) Absolut første linje i dine filer skal være:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Husk ingen blanktegn før <!
2) Angiv dit charset som utf-8.
3) Du bør overveje eksplicit at angive, at dokumentet er et xml-dokument,
hvorfor du bør starte dine dokumenter således:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Dette sikre dig, at alle varianter af IE kører i standard compliance mode
- gælder især for IE7, hvor denne form er krævet.
PS. dine sider validerer ikke: f.eks. skal & skrives som & da tegnet &
angiver start på en html-tegnkode.
--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917
| |
Martin Kaltoft (11-04-2006)
| Kommentar Fra : Martin Kaltoft |
Dato : 11-04-06 17:03 |
|
> Jeg kan se, at dit charset stadigvæk er iso-8859-1. Hvis jeg tvinger min
> firefox til at anvende utf-8, fremvises teksten korrekt. Hvilken browser
Ja, jeg ændrede det tilbage, men nu prøvede jeg lige igen, og det virker som
det skal nu !? Jeg må have gjort det forkert i første omgang...
> benytter du? Hvis det er IE, kan den være vanskelig at overtale til at
> anvende andet end win-1251. For at det skal virke, skal du være helt
Jeg har lige testet det, og at sætte charset til utf-8 får det til at virke
i både firefox og MSIE.
> PS. dine sider validerer ikke: f.eks. skal & skrives som & da tegnet &
> angiver start på en html-tegnkode.
Ja, jeg ved godt at der er et par detaljer der ikke validerer, men det er
ikke ret højt på prioritetslisten i øjeblikket, men tak for hjælpen...
--
Med venlig hilsen
Martin Kaltoft
| |
Michael Rasmussen (11-04-2006)
| Kommentar Fra : Michael Rasmussen |
Dato : 11-04-06 17:28 |
|
On Tue, 11 Apr 2006 18:03:06 +0200, Martin Kaltoft wrote:
>
> Ja, jeg ændrede det tilbage, men nu prøvede jeg lige igen, og det virker
> som det skal nu !? Jeg må have gjort det forkert i første omgang...
>
Måske din browser har anvendt en cachet version?
--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917
| |
Knud Gert Ellentoft (11-04-2006)
| Kommentar Fra : Knud Gert Ellentoft |
Dato : 11-04-06 21:58 |
|
Michael Rasmussen skrev:
><?xml version="1.0" encoding="UTF-8"?>
><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>" http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>
>Dette sikre dig, at alle varianter af IE kører i standard compliance mode
>- gælder især for IE7, hvor denne form er krævet.
Med ovennævnte vil IE 6 gå i quirk mode.
--
Topposter du svar, dvs. skriver dit svar over det citerede,
så ryger du på min ignoreringsliste.
Svar under det du citerer og citer kun det du svarer på - tak.
http://usenet.dk/netikette/citatteknik.html
| |
Michael Rasmussen (11-04-2006)
| Kommentar Fra : Michael Rasmussen |
Dato : 11-04-06 23:24 |
| | |
Erik Ginnerskov (12-04-2006)
| Kommentar Fra : Erik Ginnerskov |
Dato : 12-04-06 00:50 |
| | |
Michael Rasmussen (12-04-2006)
| Kommentar Fra : Michael Rasmussen |
Dato : 12-04-06 00:58 |
| | |
Erik Ginnerskov (12-04-2006)
| Kommentar Fra : Erik Ginnerskov |
Dato : 12-04-06 01:54 |
|
Michael Rasmussen wrote:
>> http://hjemmesideskolen.dk/html/testsider/quirks.asp
>> http://hjemmesideskolen.dk/html/testsider/standard.asp
> Kan du løfte lidt af sløret for, hvad jeg burde se?
> I min IE6 ser jeg ingen forskel på de to sider.
Umiddelbart vil du i IE - og ikke i andre browsere - kunne se, at
forskellige elementer i topbaren springer lidt frem og tilbage, når du
skifter mellem de to sider (link i menukolonnen til venstre).
Men hvis du i dine foretrukne etablerer et link - kald det eks. mode-info og
med dette indhold (i en ubrudt linje):
javascript:var%20d=document,dd=d.doctype,s;s='RENDER:%20%20\t';if(d.compatMo
de=='CSS1Compat'){s+='Standard';}else{s+='Quirks';}if(dd){s+='\nSYSTEM:\n'+d
d.systemId;s+='\nPUBLIC:\t'+dd.publicId;}if(d.characterSet||d.charset){s+='\
nENCODING:\t';s+=d.characterSet?d.characterSet:d.charset;}s+='\nMODIFIED:\t'
+d.lastModified;alert(s);
.... vil du kunne fremkalde en alert-boks, som fortæller, at den ene side
sætter IE i quirks-mode, mens den anden sætter IE i standards-mode.
Eneste forskel på de to sider (bortset fra teksten i #indhold og linket til
den anden side) er, at jeg i quirks.asp har indsat denne kodelinje øverst:
<?xml version="1.0" encoding="iso-8859-1"?>
--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk/
| |
Martin Kaltoft (12-04-2006)
| Kommentar Fra : Martin Kaltoft |
Dato : 12-04-06 12:48 |
|
> Når jeg indsætter data, og viser det på siden bliver de danske tegn (æøå)
> vist forkert. Serveren kører med UNICODE, og client_encoding er også sat
> til unicode. Jeg har så prøvet at sætte client_encoding til LATIN1, men så
> får jeg at vide at den ikke kan konvertere fra UTF-8 til LATIN1...
Tja, det hjalp jo så at sætte charset til utf-8 i HTML'en.
Men, jeg genererer også nogle PDF'er på siden, ud fra data i min postgresql,
og dér ser æøå ud på samme måde som da charset var sat forkert i HTML'en.
Hvorledes ændrer jeg det dér? Det er data der kommer direkte fra postgresql,
som ser ok ud i phpmyadmin, og på resten af hjemmesiden, men når jeg
propper dem i en PDF er æøå forkerte...
--
Med venlig hilsen
Martin Kaltoft
| |
Mads Lie Jensen (15-04-2006)
| Kommentar Fra : Mads Lie Jensen |
Dato : 15-04-06 11:20 |
|
On Wed, 12 Apr 2006 13:47:50 +0200, Martin Kaltoft <kaltoft@gmail.com>
wrote:
>Men, jeg genererer også nogle PDF'er på siden, ud fra data i min postgresql,
>og dér ser æøå ud på samme måde som da charset var sat forkert i HTML'en.
>
>Hvorledes ændrer jeg det dér? Det er data der kommer direkte fra postgresql,
>som ser ok ud i phpmyadmin, og på resten af hjemmesiden, men når jeg
>propper dem i en PDF er æøå forkerte...
Hvordan "propper" du de data i pdf-filen?
--
Mads Lie Jensen - mads@gartneriet.dk - ICQ #25478403
Gartneriet - nu ny indpakning (delvist i hvert fald): http://www.gartneriet.dk/
| |
|
|