ugrás a tartalomhoz

Megváltozott MySql verzió után karakter probléma az ATW-n

nándi · 2005. Dec. 11. (V), 18.34
Azon vetten észre magam, hogy az a bizonyos ő betű helyett kérdőjel jelent meg az oldalamon. Megnéztem a mysql verziót és 4.1.15 van fent, nem rég pedig 4.0.33 vagy hanyas volt az atw-n. Namost megnéztem egy táblaexportot, aminek a végén most azt írta hogy default charset latin1, eddig nem írt semmilyen charset-et ilyenkor. Megváltoztattam a tábla charset-jét latin2-re, és amit eddig nem fogadott el (a set-et nem engedte) azt most elfogadta, azaz hogy az oldalamnál az adatbázishoz való kapcsolódás után lefuttassak egy "set names latin2" parancsot. Viszont maradt a ? így is. Mit kéne még csinálnom? Vagy mit kéne máshogy csinálnom?

ui: Azért írok ide és nem az atw-nek, mert szerintem itt hamarabb kaphatok választ.
 
1

oldal kódolása

Hojtsy Gábor · 2005. Dec. 11. (V), 18.43
Gondolom az adat, ami a MySQL-be kerül a böngészőből jön. Meg kellene nézni, hogy megfelelő HTTP fejléccel megy-e az oldal. Mondjuk a Rex Swain's HTTP Viewer egy hasznos eszköz, ha nincs Web Developer eszköztár kéznél (bármilyen böngészőhöz). Ezzel megnézed, hogy latin-2 (iso-8859-2) kódolással jön-e a HTML odal, ahonnan az adatot fogadod. Ha nem, akkor ott is gond van.
2

MySql-től

Anonymous · 2005. Dec. 11. (V), 19.36
Még nem teszteltem hogy be is írjak adatot, szóval egyelőre a MySql-től jövő adatnál jelenik meg a ?. A phpmyadmin-ban még jól jelenik meg az ő.

Amúgy az említett link ilyen sort produkált:
Content-Type:·text/html;·charset=iso-8859-2(CR)(LF)
3

ezért is jól jött

Hojtsy Gábor · 2005. Dec. 11. (V), 19.53
No, hát ha latin1-ben volt tárolva az adat, vagy az upgrade során arra állították, akkor nem csoda a kérdőjel. Nézd meg, ha egy latin1-es oldalra írod ki amit a MySQL-től kapsz, mi lesz.
4

most sem jó

nándi · 2005. Dec. 11. (V), 20.45
Maradt a ?. Pedig most nem használom a set names latin2-es megadást (set names latin1-el sem jó), és a tábla default charset-jei is latin1. Bár ezt nem írja ki az adott tábla struktúrájának lekérdezésekor phpmyadmin-ban, hanem csak tábla exportálásánál írja.

Amúgy ha eddig latin1-ben tárolták (volna) az adatokat, akkor már eddig is jelentkeznie kellett volna ennek a karakteres problémának, nem? Mert a header-ben latin2 volt eddig.
Nade ha beállítom a default charset-et a táblán latin2-re, és header-ben is latin2-t adok meg, és még kapcsolódás után egy set names latin2-t is megadok, az nem kéne hogy elég legyen?
5

Segítség

Bártházi András · 2005. Dec. 11. (V), 22.49
Talán segítség lehet a cikkem ebben a témában: http://weblabor.hu/cikkek/mysql50karakterkodolasok

Bár ez a cikk a MySQL 5.0-ról szól, a 4.1 esetén is hasonlóan voltak a dolgok.

-boogie-
6

latin1-ben már jó, latin2 még bugzik

nándi · 2005. Dec. 12. (H), 13.00
Köszönöm az eddigi tippek. Már ő van ő-nél :)
Egyrészt az volt a probléma hogy volt még egy set names latin2 megadva programomban, míg mindenhol latin1 volt megadva.

Latin2-nél meg az volt a baj - aminek megoldása még érdekelne -, hogy ha új táblát default character set latin2-vel hozok létre, akkor most már alapból ?-ként kerül a táblába az ő betű.

Kezdek ebbe belekeveredni, mert közben a mysql.atw.hu header-jében iso-8859-2, azaz latin2 kódolás van megadva. (Tehát nem a latin1-nek megadott táblában lévő ő-nek kéne az atw phpmyadmin-jában ?-ként megjelenni?)
7

András cikkéből leszűrve nekem sikerült

laji · 2006. Jan. 13. (P), 17.34
Nekem is tök keveredés volt a betűkkel keresésre, sorbarendezésre, s szintén atw-s a lapom. Én ugyan utf8-at választottam (mindenkinek melegen ajánlom), de gondolom, a lényegen nem változtat.

Amit András cikkéből és mások súgásaiból kihámoztam, végül is ez a 4 teendő nekem mindent megoldott:

1. Minden táblát utf8-ra
SET NAMES utf8;
ALTER TABLE táblám DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

ALTER TABLE `táblám` CHANGE `OSZLOP1` `OSZLOP1` TEXT CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL;
...
2.
Minden adatbevitel hasonlóképp:
SET NAMES utf8;
INSERT INTO táblám (OSZLOP1, OSZLOP2) VALUES (érték1, 'érték2');
3. Minden oldalad elején a MySQL meghívása után is kell, tehát:
<?php
mysql_select_db($adattáram, $kapcsolatom);
$betukeszlet=mysql_query("set names utf8", $kapcsolatom) or die(mysql_error());
?>
4. Végül, a szöveges állomány, amivel benyomod az adatokat és más parancsokat az atw phpIntézőjén (phpAdmin) keresztül, szintén utf8 legyen, s ne maradjon benne az elején a unicode jelölőszakasz (BOM). A Jegyzettömb pl. beleteszi - én Álomszövővel (Dreamweaver) irtom ki belőle.

Ha már léteznek adataid is, azokat szintén át kell alakítanod.

S LEGvégül :) a phpIntézőn keresztül is csak akkor látsz helyes eredményt, ha a SELECT parancsok elé beírod a SET NAME-et, majd átállítod a böngésződ betűbeállítását is. De ez már csak Téged érintő megjelenítési dolog.

Üdv: laji