Avatar billede tos Praktikant
15. juni 2009 - 12:55 Der er 13 kommentarer og
1 løsning

Oracle opslag fra PHP mangler DK tegn

Hej

Jeg har lavet et php script som henter data fra Oracle Views. Scriptet virker fint og data kommer ud, men alle danske tegn er erstattet af spørgsmål tegn: fx "Nyttige og k?nne ting af tr?".

Hvad skal der til for at DK tegn kommer ud korrekt?

Script:

$conn = oci_connect($username, $password, $db);
$stid = oci_parse($conn, $query);
if (!$stid) { $e = oci_error($conn); print htmlentities($e['message']); exit; }
$r = oci_execute($stid, OCI_DEFAULT);
if (!$r) { $e = oci_error($stid); echo htmlentities($e['message']); exit; }
while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS)){ ... kode ...}
Avatar billede repox Seniormester
15. juni 2009 - 13:37 #1
Det kunne være fordi du har ISO-8859-1 tegnsæts værdier i tabellen som UTF-8 decodes når du viser dem.

Prøv, når du skriver en værdi ud at utf8_encode() outputtet.
Avatar billede tos Praktikant
15. juni 2009 - 14:05 #2
Database folkene siger: "I basen er brugt ISO 8859-9, dvs. latin9, men i praksis kan I regne med latin1"
Avatar billede repox Seniormester
15. juni 2009 - 14:10 #3
Betyder det at du ikke vil prøve med mit forslag?
Avatar billede tos Praktikant
15. juni 2009 - 14:16 #4
jeg har prøvet men uændret resultat :(
Avatar billede repox Seniormester
15. juni 2009 - 14:29 #5
Har du en url hvor man kan se resultatet af dit output?
Avatar billede tos Praktikant
15. juni 2009 - 14:36 #6
Avatar billede repox Seniormester
15. juni 2009 - 14:44 #7
Du skal lige have styr på hvad det er du vil servere.
I din HML har du angivet at du vil præsentere din tegnsætning som ISO-8859-1, men serveren leverer filen i UTF-8 format.

Det skal du have løst først.
Avatar billede tos Praktikant
15. juni 2009 - 14:59 #8
Problemet er at jeg skal have indlæst dem i mysql og ikke vist på web, men jeg skal jo bruge et sted at teste :)
Jeg har sat content-type til:
<meta http-equiv="content-type" content="text/html; charset=utf-8" />

Scriptet der udskriver er:
while($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {
  print "<tr>\n";
  foreach ($row as $item) {
  print "\t<td>".($item?utf8_encode(htmlentities($item)):'&nbsp;')."</td>\n";
  }
  print "</tr>\n";
}
Avatar billede repox Seniormester
15. juni 2009 - 15:05 #9
Prøv lige at utf8_decode det istedet; bare for sjov skyld.
Avatar billede tos Praktikant
15. juni 2009 - 15:23 #10
det giver ingen ændringer
Avatar billede repox Seniormester
15. juni 2009 - 15:26 #11
Kan du vise strukturen af din tabel samt et rå dump på nogle af de linier du henter ud?
Avatar billede tos Praktikant
15. juni 2009 - 15:40 #12
nej for det er et view fra en oracle server og jeg udskriver bare alle records i en foreach()
Avatar billede repox Seniormester
15. juni 2009 - 15:47 #13
Så har jeg ikke mere at indskyde.
Avatar billede tos Praktikant
05. oktober 2012 - 09:46 #14
svar
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