/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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 &amp; 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 &amp; 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

On Tue, 11 Apr 2006 22:58:14 +0200, Knud Gert Ellentoft wrote:

>
> Med ovennævnte vil IE 6 gå i quirk mode.
Har du nogen eksempler på dette? Det er ikke min opfattelse.
--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917


Erik Ginnerskov (12-04-2006)
Kommentar
Fra : Erik Ginnerskov


Dato : 12-04-06 00:50

Michael Rasmussen wrote:

>> Med ovennævnte vil IE 6 gå i quirk mode.

> Har du nogen eksempler på dette? Det er ikke min opfattelse.

http://hjemmesideskolen.dk/html/testsider/quirks.asp
http://hjemmesideskolen.dk/html/testsider/standard.asp

--
Med venlig hilsen
Erik Ginnerskov
http://hjemmesideskolen.dk/ - http://ginnerskov.dk/
http://html-faq.dk/



Michael Rasmussen (12-04-2006)
Kommentar
Fra : Michael Rasmussen


Dato : 12-04-06 00:58

On Wed, 12 Apr 2006 01:49:51 +0200, Erik Ginnerskov 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.
--
Hilsen/Regards
Michael Rasmussen
http://keyserver.veridis.com:11371/pks/lookup?op=get&search=0xE3E80917


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/

Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste