ugrás a tartalomhoz

MySQL és Ékezetek

Anonymous · 2004. Nov. 25. (Cs), 10.20
Üdv Mindenkinek,

//MySQL 3.23.xx - MyISAM

olyan kérdésem lenne, hogyha MySQL-ben elmentek egy adatbázisba magyar szöveget mondjuk 'ő' betűt tartalmazva, akkor azt az adatbázisban ő v. vmi hasonló módon tárolja el, majd ezt felülírva mondjuk a MySQL CC-ben (Control Center) a rendes 'ő' karakterrel, akkor utána már ugyanazzal a programmal elmentve nem írja vissza arra a &#337-re. Mit lehetne tenni, hogy a legelső alkalommal se írjon bele nekem &#337-et, htmlspecialchars meg ilyenek nem használok, sime $_POST-ot csak, hol íródik át az egész?

Üdv
Sanyi
 
1

MySQL és Ékezetek

Anonymous · 2004. Nov. 25. (Cs), 10.43
Annyi hozzáfűznivalóm lenne még, hogy amire rájöttem, ha magyar billentyűzetről viszem be az 'ő' betűt a Form alapú weboldalon, akkor menti el abban a &#337 formában. Ha viszont MySQL CC-ben módosítom, akkor is ugyanazt a billentyűzetet nyomom le.
A php kódban mentéskor kiírattam a _POST értéket, ott már ilyen hülyén szerepel, akkor ez azt jelenti, hogy nekem kell átalakítani ezeket a speciális karaktereket!?

Üdv
Sanyi
2

Nem a MySQL a gond...

Bártházi András · 2004. Nov. 25. (Cs), 10.55
Szóval igen, neked kell konvertálnod, vagy pedig a szervert kellene beállítanod, vagy az oldalt kiküldő scriptet, hogy ne iso-8859-1, hanem iso-8859-2 formátumban kerüljön kiküldésre az oldal. A hibajelenség, ami nem is hibajelenség különben az, hogy az oldal kódolásába nem fér bele az adott karakter (esetünkben az ő betű nem szerepel az iso-8859-1-es karakterkészletben, csak az iso-8859-2-ben, vagy unicode-ban), azért a böngésződ a unicode kódjával küldi el HTML entity formában.

-boogie-
3

Ékezetek

Poetro · 2004. Nov. 25. (Cs), 10.56
Hát igen. Ha az oldal nem megfelelő kódolást használ, akkor általában ez így történik. Ha megfelelő kódolást használsz, akkor is van még pár karakter is HTML Entity-ként kerül be az adatbázisba. Ezeken tényleg csak a kézzel egy táblázat segítségével írod át a karaktereket a kívánt alakra.
--------
Poetro
4

UTF-8

Bártházi András · 2004. Nov. 25. (Cs), 11.17
Hozzátenném még azért, hogy ha UTF-8-at használsz az oldaladon, akkor sohasem lesz ezzel probléma, s jöhet bármi... ;)

-boogie-
5

UTF-8

Anonymous · 2004. Nov. 25. (Cs), 11.34
az király lenne, kérdés, az Apache-t kellene ehhez átállítanik, vagy elég az oldal charset-jét átállítani?

Köszi szépen a hozzászólásotokat, egyenlőre kézzel határoztam meg az 'ő,Ő,ű,Ű' karaktereket, de szerintem kellene egy általánosabb megoldás is, amire még azért gyúrni kellene egy kis tanáccsal, tehát melyiket csináljam:

1. magam táblázat alapján
2. Apache szervert rendesen beállítani(ami kicsit nehezebb)
3. HTML META... Charset-jét

Üdv
Sanyi
6

UTF8 és egyéb

Bártházi András · 2004. Nov. 25. (Cs), 12.16
Szia!

Az UTF-8-hoz állíthatod az Apache default charset-jét, de lehet, hogy az egyéb programok miatt célszerűbb, ha csak minden oldalad elején egy header() keretében állítod át a kódolást. Amivel gondok lehetnek, azok a string műveletek, konkrétan egy substring lehet, hogy pont egy utf-8 karakter határnál fogja elvágni a betűdet. Ugyanígy az így kódolt szöveg pontos hossza is nehezebben állapítható meg, nehezebb a kisbetű, nagybetű konverzió, stb.

Csinálhatsz saját táblázatot, átállíthatod a szervert, de így is tök egyszerű olyan karaktert találni, ami nem lesz benne az iso-8859-2 kódolásban: pl. ÷, ×, ¤, ★, „, ” - és még sorolhatnám. Persze azt is csinálhatod, hogy a kódolás jó beállítása mellett (az nem árt) összeállítasz egy táblázatot a konverzióra, s ha olyan karakter jön, amit nem ismersz fel, átkonvertálod mondjuk ?-re.

A HTML meta charsetje nem megoldás, ha a szervernek be van állítva, hogy kiküldjön kódolást (ez pedig elég biztos, hogy így van), mivel a szerver által kiküldött kódolás az erősebb.

-boogie-
7

header()

Anonymous · 2004. Nov. 25. (Cs), 12.44
Igazad van, hogy erre a header()-re miért nem gondoltam korábban,
kircsin működik is...

Köszi

Üdv
Sanyi