[PHP] ODBC-koppeling en UTF-8 charset

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • peer1979
  • Registratie: Maart 2008
  • Laatst online: 16:41
Momenteel ben ik bezig met een webapplicatie die UTF-8 data (waaronder specifieke Frans/Spaanse tekens) uit een microsft access database moet kunnen lezen.

Als ik de gegevens bekijk via Access, dan worden de tekens juist weergegeven. Zogauw ik echter met de functie odbc_exec een query uitvoer, dan krijg ik voor die specieke tekens geen juiste uitvoer in PHP.

Het lijkt me dat het probleem zit in de functie odbc_exec. Hoe kan ik aangeven dat ik wil werken met UTF-8 data?

Elke webpagina start overigens met deze meta tag:

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

Ik heb reeds verschillende fora bekeken, gezocht met google en zelf geprobeerd het probleem op te lossen. Helaas nog geen resultaat tot nu toe.

Acties:
  • 0 Henk 'm!

  • Spinal
  • Registratie: Februari 2001
  • Laatst online: 19-09 13:37
Stuur je ook een utf8-header mee?

PHP:
1
header('Content-Type: text/html; charset=UTF-8');

Full-stack webdeveloper in Groningen


Acties:
  • 0 Henk 'm!

  • peer1979
  • Registratie: Maart 2008
  • Laatst online: 16:41
Nee, dat deed ik niet.

Die meta tag moet voldoende zijn, maar heb je suggestie voor de zekerheid zojuist geprobeerd. Helaas geen gewenst effect.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
En je weet zeker dat de Access database de juiste encoding gebruikt? Je weet 100% zeker dat het UTF-8 is?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Komt de pagina wel in utf8 aan? Check even in Firefox, rechtermuisklik -> View page info.

Acties:
  • 0 Henk 'm!

  • peer1979
  • Registratie: Maart 2008
  • Laatst online: 16:41
RobIII schreef op woensdag 08 oktober 2008 @ 10:43:
En je weet zeker dat de Access database de juiste encoding gebruikt? Je weet 100% zeker dat het UTF-8 is?
Zoals ik aangaf geeft Access de tekens juist weer. Nu ik er zo over nadenk weet ik niet in welke charset Access de data opslaat. Zal gaan zoeken in deze richting..
Noork schreef op woensdag 08 oktober 2008 @ 10:46:
Komt de pagina wel in utf8 aan? Check even in Firefox, rechtermuisklik -> View page info.
Pagina komt in UTF-8 aan ( gecontroleerd ).

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Bij MySQL moet je ook een query "SET NAMES UTF-8" en/of "SET CHARACTERDATA UTF-8" (vergeet altijd welke van de 2 verplicht is hiervoor...) meegeven anders haalt ie zn data niet in UTF8 op ondanks dat alles wel zo in de DB staat. Ik gok dat bij ODBC zoiets nodig zal zijn om dit op te lossen.

Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Cartman! schreef op woensdag 08 oktober 2008 @ 11:45:
Bij MySQL moet je ook een query "SET NAMES UTF-8" en/of "SET CHARACTERDATA UTF-8" (vergeet altijd welke van de 2 verplicht is hiervoor...) meegeven anders haalt ie zn data niet in UTF8 op ondanks dat alles wel zo in de DB staat. Ik gok dat bij ODBC zoiets nodig zal zijn om dit op te lossen.
Dat is dus niet waar. Als PHP gewoon in utf8 staat, en de db ook, hoef je dit niet te doen. Het is alleen handig als je db utf8 is, maar je pagina ISOxxxx. Proberen met een ODBC koppeling kan geen kwaad natuurlijk.

Acties:
  • 0 Henk 'm!

  • peer1979
  • Registratie: Maart 2008
  • Laatst online: 16:41
Cartman! schreef op woensdag 08 oktober 2008 @ 11:45:
Bij MySQL moet je ook een query "SET NAMES UTF-8" en/of "SET CHARACTERDATA UTF-8" (vergeet altijd welke van de 2 verplicht is hiervoor...) meegeven anders haalt ie zn data niet in UTF8 op ondanks dat alles wel zo in de DB staat. Ik gok dat bij ODBC zoiets nodig zal zijn om dit op te lossen.
Hier had ik al mee gespeeld, maar dit functioneerde ook niet. Op het moment dat ik de query 'set names utf8' verstuur, krijg ik deze foutmelding terug.

[Microsoft][ODBC Microsoft Access-stuurprogramma] Er is een ongeldige SQL-instructie gevonden. DELETE, INSERT, PROCEDURE, SELECT of UPDATE werd verwacht.

Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Weet je zeker dat je data in Access als UTF-8 staat, en niet bijvoorbeeld als WIN-1252, ISO-8859-1 of ISO-8859-15 of zelfs UTF-16?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
peer1979 schreef op woensdag 08 oktober 2008 @ 12:01:
[Microsoft][ODBC Microsoft Access-stuurprogramma] Er is een ongeldige SQL-instructie gevonden. DELETE, INSERT, PROCEDURE, SELECT of UPDATE werd verwacht.
Nogal wiedes; je laat nu MySQL specifieke meuk los op MS Access :X

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

  • peer1979
  • Registratie: Maart 2008
  • Laatst online: 16:41
Remus schreef op woensdag 08 oktober 2008 @ 12:48:
Weet je zeker dat je data in Access als UTF-8 staat, en niet bijvoorbeeld als WIN-1252, ISO-8859-1 of ISO-8859-15 of zelfs UTF-16?
Ik vraag me inderdaad af hoe ik dat kan instellen. Zoals gezegd, weet ik niet in welke encoding access de data opslaat. Waar kan ik dat zien of instellen?

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Noork schreef op woensdag 08 oktober 2008 @ 11:53:
[...]

Dat is dus niet waar. Als PHP gewoon in utf8 staat, en de db ook, hoef je dit niet te doen. Het is alleen handig als je db utf8 is, maar je pagina ISOxxxx. Proberen met een ODBC koppeling kan geen kwaad natuurlijk.
Ik heb er altijd problemen mee dat ondanks dat files opgeslagen worden in UTF8, DB in UTF8 en mn headers UTF8 zijn het niet goed werkt. Als ik die query die ik eerder zei uitvoer dan werkt het als n zonnetje...

Acties:
  • 0 Henk 'm!

  • peer1979
  • Registratie: Maart 2008
  • Laatst online: 16:41
Omdat ik naast het Nederlands alleen Franse en Spaanse tekens gebruik, voldoet de charset ISO-8859-1 charset!

De oplossing was : <meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1">

Helaas weet ik nog niet hoe je access zover moet krijgen dat deze utf-8 gebruikt .. maar ik ben blij dat ik zo verder kan! :)
Pagina: 1