ugrás a tartalomhoz

Karakterkezelési probléma PHP/MySQL

chinomoreno · 2005. Ápr. 19. (K), 18.40
Hali!

Lenne egy problémám, remélem vki tud segíteni!!
Az a helyzet, hogy az SQL-ban eltárolt adatok
magyar ékezetes részei helyett valami hihetetlen
karaktersorozatokat produkál. A form-om <select>-jét
töltöm fel a táblából. PhpMyadmin alatt tökéletesek az
ékezetek, de bármilyen kódolást állítok be (latin2) ugyanazt
az eredményt kapom az oldalban, pedig header();-rel és <META>-val
is próbáltam beállítani a weblap kódolását. Az utf-8 pedig
mind a <meta> és mind a header(); esetén tiszta fehér képernyőt
eredményez. Na erre mi lehet a megoldás???
 
1

Nem tudom milyen MySQL-t

Anonymous · 2005. Ápr. 20. (Sze), 15.20
Nem tudom milyen MySQL-t használsz, de nemrég update-eltem otthon egy 4.1 felettire, és ott a telepítésnél kérdezte, hogy milyen adatokat akarok tárolni. (mármint hogyan kezelje a karaktereket). Alap beállításban 'DOS' alatt jól jelentek meg az ékezetek, viszont a weblapokon rosszul. Át kellett állítanom, és most jó. Sztem nálad is ez a probléma! (tehát a MySQL-t állítsd, ne a weblapot)
3

MySQL ver.

chinomoreno · 2005. Ápr. 21. (Cs), 16.57
4.1-es fölötti, és tudom mire gondolsz... A középső választási
lehetőséget választottam (utf-8)!! És ami a legfurcsább, hogy
ha phpmyadminból megváltoztatom a mező karakterkészletét (vagy manuálisan
CHARACTER SET-tel, COLLATE-tel) akkor sem csinál semmit!!!
Már kínomban kipróbáltam, hogy kínai karakterkészlettel milyen,
de ugyanaz maradt mint volt! Lövésem sincs mi lehet vele....
Felrakom újra inkább, hátha...
4

Ugyanaz a helyzet.

aries · 2005. Júl. 25. (H), 16.21
U.az.

Balga módon frissítettem a MySQL-t 4.1.13-ra 4.1.10-ről,
és teljesen meghülyült a collation/charset kezelése,
már nem látom át, hogy mit miért csinál, hiába állítom
be egy táblára, hogy latin2/latin2_hungarian_ci, utf8-ként
adja ki a karaktereket és fordítva...

Hogyan lehet ezt a collation/charset dolgot letiltani benne?
Egyáltalán nincs szükségem rá, csak összezavar mindent. :(
--
Aries
http://aries.mindworks.hu
2

karakter beállítás

Anonymous · 2005. Ápr. 20. (Sze), 15.41
http://dev.mysql.com/doc/mysql/en/charset-server.html
http://dev.mysql.com/doc/mysql/en/charset-database.html
http://dev.mysql.com/doc/mysql/en/charset-table.html
Üdv
Zoli
5

utf8

Anonymous · 2005. Júl. 25. (H), 16.48
Szia!

Állíts mindent utf8-ra.
A PHP.INI-ben:
[PHP]
default_charset = "utf-8"

A MY.INI-ben:
[mysqld]
init_connect="SET NAMES utf8"
default-character-set=utf8

Az az init_connect lesz a lényeg, mert anélkül nem működött nálam sem. Hiába állítgattam, konvertáltam bármit.

Üdv
Zoli
6

ez nem teljesen ok

aries · 2005. Júl. 25. (H), 19.15
A gond az, hogy production gépen jött elő ez a drágaszág, és ott ha átis állítom utf8-ra (megtettem) semmi vátlozás. A collation-öket is hiába állítom át, akkor sincs változás. Nem értem.
--
Aries
http://aries.mindworks.hu
8

az nem baj

Anonymous · 2005. Júl. 25. (H), 20.01
Ez csak az ÚJ adatbázisok létrehozása után működik rendesen, ahogy kell.
A régi adatbázisoddal az a baj, hogy a kétbájtos betűk két külön karakterként tárolódtak. (és eddig látszólagosan jól is működött minden, mert a PHP ugyan értelmezte ezeket UTF8-nak, de az adatbázis mégsem ezt mutatta)
Én azt tettem, hogy exportáltam a már UTF8 adatbázist, majd kicseréltem (UTF8 editorban: notepad.exe) a kétkarakteres, rosszul megjelenő karaktereket a magyar ékezetesekre. Lementettem, visszaimportáltam, és csoda történt.
A fenti beállításokkal a MySQL Browser-rel is szerkeszthető, olvasható szöveget kapsz.
Nagy kínlódás... nekem orosz karakterekkel + hexa editorral kellett ezt játszanom.

Üdv
Zoli
10

Köszi a választ! De

aries · 2005. Júl. 26. (K), 11.06
Köszi a választ! De kicsit nagyon furcsán működik ez:

A my.cnf -ben most ez van:
[mysqld]

init_connect="SET NAMES latin1"
default_character_set=latin1

A SET CHARACTER SET latin1 -et kell beírni az utf8-as tartalmakhoz,
és SET CHARACTER SET utf8 -at pedig a latin1-es tartalmakhoz.

Mindkét táblának latin1_swedish_ci a collation-je.

Nagyon elvesztettem a fonalat :(((
--
Aries
http://aries.mindworks.hu
11

collation

Anonymous · 2005. Júl. 26. (K), 12.05
A collation csak az abc sorrendet defíniálja. Azért lehet szívás az UTF8, mert annak nincs magyar collation-je, azaz nem ismeri a magyar abc sorrendet. puff.

Azért van ekkora kavarodás a karakterkódolás között, mert a PHP-MySQL kapcsolatban a PHP feltölti karakterekkel a MySQL-t. Olyan karakterszettel, amire a PHP-t állítottad. És ezután a PHP ki is tudja "olvani" onnan, szinte tök mindegy mit állítottál a my.conf fájlba.
Ezért működik tök jól a PHPMyAdmin.

Dehavéletlen: közvetlenül akarod szerkeszteni a táblát a MySQL Browser-ben, vagy exportálod SQL fájlba a táblát, mégis hülyeséget látsz.

Ez izgatott engem fel, hogy miért látok szerkeszthetetlen adatot a táblában... Rájöttem, hogy a PHP-MySQL kommunkiáció során "elveszik" az az info, hogy UTF8 karatereket küld a PHP, és hogy tessék azt UTF8-ként fogadni a MySQL-nek.

Ezért kell az init_connect sor a my.conf-ba.

De ettől nem javul ugye meg a dolog, mert azt látod, hogy az EZUTÁN bevitt adatok már jól jelenítődnek meg, de az eddig "rosszul" tárolt adatokat már ilyen konvergálgatásokkal nem tudsz UTF8-ra váltani.

Erre írtam a fent vázolt megoldást.

Remélem nem hibás az elméletem, de nem találtam rá magyarázatot sehol. Keress rá az init_connect-re a neten.

Üdv
Zoli
7

"Állíts mindent

adriankoooo · 2005. Júl. 25. (H), 19.49
"Állíts mindent utf8-ra.
A PHP.INI-ben,A MY.INI-ben:"

És ha nincs root joga a gephez?

Egyebkent nekem is hasonlo a problémám, mar probaltam az egvilagon mindent de semmi. Nekem a szlovák karaktereket kene kezelnie: čýáíéľš megy de például a ť az nem. Allitgattam SET CHARACTER SET czeh, vagy az utf8-cal is megprobaltam,de csak ennyit kaptam: unknown character set czeh.
Kivancsi vagyok hogy az phpmyadmin , hogyan is mukodik, ugyanis ott nekem is jo minden :/


---
http://adriankoooo.blogspot.com
9

KISS módszer

Anonymous · 2005. Júl. 26. (K), 10.25
KISS azaz keep it simple stupid (tartsd egyszerüen bután). Én azt csináltam, hogy a HTML UTF-8-ban van, ezért a kliens is UTF-8-at fog visszaadni és egy az egyben belenyomtam a MySQL-be. Charset-et nem adtam meg neki. Amikor visszakérem, ugyanazokat az adatokat kapom meg UTF-8-ba kódolva, szóval semmi probléma.

Nem tudom, hogy a PHPMyAdminban hogy jelenik meg, de azt nem használok... :)

ProClub
proclub##kukac##karinthy.hu
12

Nem akarok senkit bántani

dtaylor · 2005. Júl. 28. (Cs), 10.04
De hogy a szerver beállításokat átállítani egy db miatt?
Minden legyen utf-8? És ha valaki más db-t akar használni, más paraméterekkel?

Röviden: nem kell a szerver és php beállításokhoz hozzányúlni.
Az utf-8 meg azért is érdekes mysql-nel, mert nincs hozzá magyar collation. Nem tudom, még nem teszteltem, hogy mi lesz a végeredmény, de a mysql 4.0.x-nel utf-8 as db esetén nem volt jó. Nincsenek kétségeim, hogy a 4.1-nél sem lesz jó a sorrend magyar ékezetek esetén.

Tehát:

create db-kor megadni a character set latin2 és a collation latin2_hungarian_ci paramétereket. Ekkor annak a db-nek ez lesz a default beállítása.

Ez még nem elég. Ha php-val kapcsolódsz a db-hez, akkor a connection után add ki a "set names latin2" query-t.

Utána jó lesz. Épp most teszteltem, így megmaradnak az őŐűŰ betűk. Remélhetőleg a sorba rendezés is oké lesz.

--
[ Dönci ]
13

A jövő az utf8

Anonymous · 2005. Júl. 28. (Cs), 11.58
ёЁйЙцЦуУкКеЕнНгГшШщЩзЗ хХъЪфФыЫвВаАпПрРоОлЛдДжЖэ ЭяЯчЧсСмМиИтТьЬбБюЮ
企業活動 - 環境 - 安全 - 社会活動 - 気球
14

Egyetértek...

kgyt · 2005. Júl. 28. (Cs), 12.04
이 사이트는 현재 작업중임.
나중에 다시 방문해 주십시오.

(Ez azt jelenti koreaiul, hogy az oldal feltöltés alatt, nézz vissza később.)

Ez meg Budapest: 부다페스트.


--
Szeretettel: Károly György Tamás
kgyt(a)kgyt.hu - http://kgyt.hu
15

latin2 DE a PHP forrás fájl is ANSI legyen!

Anonymous · 2005. Okt. 21. (P), 17.45
Egy kis kiegészítést tennék (tapasztalataim alapján) ahhoz ami a latin2 beállításról szól.
Csak akkor működik helyesen, ha magának a php fájlnak sem utf8 a kódolása hanem ANSI.
Ezt a legegyszerübben úgy lehet ellenőrizni vagy módosítani, hogy jegyzettömben megnyitva, mentés máskéntnél kiválasztható a kódolás.

[VarankaJ]
16

<Nincs cím>

Anonymous · 2005. Okt. 27. (Cs), 17.30
Az egy dolog, hogy hogyan tárolja a MySQL, de kiolvasva is ákom-bákomokat ad vissza? Mert akkor tényleg a fentiekhez csatlakozom :)
17

akkor is érdemes

Anonymous · 2005. Okt. 27. (Cs), 18.17
Akkor is érdemes addig szórakozni, amíg az utf8 nem működik jól és logikusan. Pédának okáért megszültem egy ilyen utf8 kódolású weboldalt+adatbázist. Akkor nem is gondoltam volna, de most például ukránra kell lefordíttatnom...
De jó, hogy már nem az adatkonvertálásokkal kell foglalkoznom.

Zed