ugrás a tartalomhoz

MYSQL ékezet probléma utf8 alatt a php fájlban

bendash · 2009. Júl. 14. (K), 17.17
Tisztelt közösség,

Tudom, hogy valószínűleg már hatszázszor felmerült ez a téma, de mivel egy heti kitartó keresés után sem sikerült mindenre választ adó magyarázatot találnom, ezért egy kétségbeesett lépésre szántam el magam - úgy döntöttem, hogy kérdezek: ezúttal mindent (egyben, ebben a témakörben) :)

Nem vagyok kezdő az informatika területén, de az adatbázisoknál ez még elmondható rólam. Mikor először belekezdtem, hadd ne mondjam, milyen ronda kódok születtek, amik még úgy ahogy helyesen jelenítették meg az ékezeteket is. Most, hogy áttervezek egy weboldalt, úgy gondoltam, kezdjük tiszta lappal, és csináljuk helyesen - de sajnos nem találom a választ, hogy hogyan, bár úgy érzem, közel vagyok...

A probléma: Az ékezetek nem jelennek meg megfelelően a kliens oldalon, a PHP lekérdezés után. Egy sima select * from db-ről van szó, ahol kiíratom egy 1 oszlopos tábla minden elemét, de az eredményben az ő betűk ?-ként, míg az á betűk fekete rombusz alapú kérdőjelként jelennek meg.

A környezet:
A tesztként használt index.php fájlban nem használok semmiféle set charset-et vagy ilyesmit, egy sima db-connect és lekérdezés van benne; az egyetlen, ami fontos lehet, a head-ben a következő meta tag:

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

A szerver oldalon MySQL 5.0.32 fut, a PHPMyAdmin szerint a

MySQL karakterkészlet: UTF-8 Unicode (utf8)
MySQL kapcsolat egyeztetés: UTF8_General_ci
Az adatbázis, illetve a benne lévő tábla is UTF8_General_ci-re van állítva.
A php.ini-ben a default charset utf-8.

Arra szeretnék kérni minden kedves válaszadót, hogy ha megtenné, mondjon egy olyan beállításcsoportot, amiben az ékezetek 100%-ra biztosan jól jelennek meg, és az a "helyes út", hogy beállítsam az adatbázist. Természetesen ha valamilyen lényeges információt kihagytam, kérésre megírom.

Előre is köszönöm, és elnézést, tudom hogy sokadszor fordul elő...

Üdv,
Ben
 
1

Megoldva

bendash · 2009. Júl. 14. (K), 17.49
Megoldottam, újabb fél óra után, és átállítva mindent utf8_hungarian_ci-re:

mysql_query('SET NAMES utf8');

kell a mysql_select_db után, és onnantól megjelenít mindent rendesen...

Viszont továbbra is várom a különböző adatbázis-guruk válaszát arra vonatkozóan, hogy ez egy megfelelően használható megoldás e, vagy megint csak egy foltozott, épphogy működő.
2

Csatlakozom

Ustak · 2009. Júl. 14. (K), 22.23
az előttem szólóhoz, én is mindig beleszaladok ebbe a dologba, persze aztán mindig megoldom... Csak jó lenne a az órahossza nem arra menne el hogy keresem a megoldást...
Ami most eszembe jut:
fájl:
fileencoding, encoding : utf8;

mysql
my.cnf:
default-character-set=utf8
character-set-server=utf8
(Ez meg szokta oldani, de van még a SET NAMES utf8)

Apache (Ezt nem szoktam használni, de van ilyen)
AddCharset, AddDefaultCharset UTF-8

php:
header:utf8;

html <head>:
meta charset utf8;


Persze bérelt szerveren ha nem férsz hozzá a conf fájlokoz, a php-adminban MINDEN lehetséges érték utf8 -ra állítása az én általam preferált szolgáltatónál hozza a kívánt eredményt.
Üdv:
Gábor
3

Van cikk

gabesz666 · 2009. Júl. 15. (Sze), 16.59
Weblaboron született egy cikk erre vonatkozóan: Karakterkódolási problémák kiküszöbölése
Ha az ebben levő összes tanácsot betartja az ember, akkor működnie kell!
4

El fogom

Ustak · 2009. Júl. 15. (Sze), 22.13
olvasni, mily szégyen, de eddig elkerülte a figyelmemet :-)
Üdv:
Gábor.