ugrás a tartalomhoz

Mysql 4.1 & utf8

hubidubi · 2005. Jan. 24. (H), 20.10
Hello!

Adott egy 4.0-ás mysql, amit 4.1-re szeretnék frissíteni. Ezzel együtt szeretném a latin1/2 típusú tábláimat utf8 típusúvá alakítani a bennük levő tartalommal együtt. A mysql leírása szerint ALTER TABLE <tábla> CONVERT TO CHARACTER SET utf8 parancs meg is teszi ezt. A parancs lefut, de a tartalom kódolása nem változik. Az egyes oszlopok felveszik a utf8-as kódolást, de a tartalom nem.
Érdekelne, hogy találkoztatok már valaki ilyennel vagy tudtok esetleg valamilyen más egyszerű megoldást, amivel az adatokat át tudnám konvertálni.

Kösz,

Hubidubi
 
1

Mysql 4.1

Anonymous · 2005. Jan. 24. (H), 21.46
Amit én tennék, hogy phpmyadminnal kiszedném egy csv fájlba (ha lehet utf-ként) majd pedig visszatenném szintén utf beállítással ha van. Illetve van most már egy query browser mysql tool, esetleg ha abban van valami "insert into () select ... from ..." lehetőség uft támogatással.
3

phpmyadmin

aries · 2005. Jan. 25. (K), 14.06
A PHPMyadmin nem jó - még erre -, nem kezeli jól az utf8-at és a 4.1.x új kiegészítéseit! Sokat szívtam emiatt átálláskor, ha nem akartok Ti is, akkor maradjatok meg a mysqldump -nál!
2

RTFM?

bbalint · 2005. Jan. 24. (H), 22.38
legjobb emlékeim szerint a MySQL dokumentácijó tényleg ilyesmit ír, de. ez az ALTER TABLE parancs csak arra való, hogy a kódolást állítsd át, de nem a tartalmat konvertáld.
van viszont egy CONVERT() nevű függvény.
ezt belekombinálva egy UPDATE parancsba eredményt lehet elérni, aszem
UPDATE `tábla` SET `oszlop` = CONVERT(`oszlop` USING UTF8);
de az is lehet, hogy helyette a régi tábla alapján kell csinálni egy újat, de már UTF-8 kódolással és abba kell beilleszteni az adatokat
CREATE TABLE `új_tábla` LIKE `régi_tábla`;
ALTER TABLE `új_tábla` CONVERT TO CHARACTER SET 'utf8';
INSERT INTO `új_tábla` SELECT * FROM `régi_tábla`;
DROP TABLE `régi_tábla`;
ALTER TABLE `új_tábla` RENAME TO `régi_tábla`;
ha minden igaz, az INSERT INTO ... SELECT-nél nem szabad semmi bajnak történnie, mert (szvsz) utf8-ba bármiből lehet konvertálni ...

bbalint
4

Nem

Seemann · 2005. Jan. 31. (H), 23.16
én viszont nem szeretném az uft8-at használni, de bármit tettem eddig (ezek szerint nem eleget :-) minden áron ez az alapértelmezett karakterkészlet. Legalábbis a phpmyadmin ezt írja ki és a megjelenítéskor gond van az ékezetekkel. A my.cnf fájlba ezt írtam:
....
language=valami/mysql/share/hungarian
character-sets-dir=valami/mysql/share/charsets/
default-character-set=latin2
default-collation=latin2_hungarian_ci
.....

A saját gépemen lévő fejlesztőkörnyezetet szeretném úgy beállítani, hogy ne legyen gond, ha a szerverre pakolok (oda-vissza). A szervert nem tudom befolyásolni, azon iso 8859-2 karakterkészlet van. Lehet, hogy valami fogalomzavarban vagyok, segítsetek ki legyetek szívesek.

Kösz!
5

phpmyadmin

Hojtsy Gábor · 2005. Feb. 1. (K), 15.56
Éppen a PHPMyadmint kellene átállítani, nem a MySQL-t :) Ha a PHPMyAdmin utf8ban próbál megjeleníteni, és ez rosszul néz ki, akkor valószínűleg a MySQL (számodra) jól alkalmazza a latin-2 kódolást.
6

manual

Anonymous · 2005. Feb. 1. (K), 17.27
amint elhangzott, CONVERT() függvény.

vagy

$ iconv -f ISO-8859-15 -t UTF-8 -o valami.utf.sql valami.sql
7

Mint mondtam

Seemann · 2005. Feb. 2. (Sze), 20.51
lehet, hogy fogalomzavarban vagyok, vagy az is lehet, nem jól tettem fel a kérdést. Kösz a példát a konverzióra még jól jöhet, de most biztos, hogy nem egy meglévő táblát vagy adatbázist szeretnék átkonvertálni. Frissen felrakott fejlesztőkörnyezetben létrehozok adatbázist, táblát. Egy mezőbe beírok ékezetes betűket, helyesen látom. Egy olyan lapon jelenítem meg, ahol ilyen a kódolás:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
Itt rosszul jelenik meg az ékezet.
Egy szerveren lévő phpmyadmin kezdőlapján ezt látom:
Language: akarmi (utf-8)
MySQL karakterkészlet: ISO 8859-2 Central European (latin2)
MySQL kapcsolat egyeztetés:latin2_general_ci
Nálam:
Language: akarmi (utf-8)
MySQL karakterkészlet: Utf-8
MySQL kapcsolat egyeztetés: itt bármit beállíthatok.
Úgy gondoltam, a language a phpmyadmin nyelve, a mysql karakterkészlet a gépemen lévő mysql adatbáziskezelő karakterkészlete, amit a my.cnf-ben tudok váltani. A MySQL kapcsolat egyeztetés, fogalmam sincs micsoda.
Talán így érthetőbb a kérdésem.
Kösz a segítséget!
Üdv!
8

nem olvastad?

Hojtsy Gábor · 2005. Feb. 2. (Sze), 21.38
Nem olvastad a fenti válaszomat? Az úgy is megfogalmazható, hogy ha két különböző kódolás van a MySQL-ben és a PHPMyadminban, akkor lehet gond a megjelenítés (szerintem nem használ átkódolót).
9

Köszi, olvastam

Seemann · 2005. Feb. 2. (Sze), 22.30
a válaszodat. Csak mint írtam a phpMyadmin-ban, sőt a MySQL-Front-ban is tökéletesen megjelenik az ékezetes betű. Ha a böngészőben jelenítem meg, akkor ír kérdőjelet pl. a hosszú ő helyére. Jó tudom, én vagyok az értetlen és a béna, csak valahogy nem csorog le a dolog.
10

Nana

Hojtsy Gábor · 2005. Feb. 2. (Sze), 22.35
Ezt írtad:
Legalábbis a phpmyadmin ezt írja ki és a megjelenítéskor gond van az ékezetekkel.

Most akkor az egy mondatban említett phpmyadmin és "a megjelenítés" az két különböző dolog? Én ezt úgy értettem, hogy a PHPMyadmin által történő megjelenítésnél van gond.
11

Bocs!

Seemann · 2005. Feb. 3. (Cs), 21.31
Ezek szerint félreérthetően írtam le a problémát. Tehát a phpMyadmin és a MySQL-Front is jól jeleníti meg a táblát, jók az ékezetes karakterek. Ha viszont böngészővel jeleníttetem meg a táblát, akkor nem jók az ékezetes betűk.
A phpmyadmin 2.6.0-pl3 elvileg kiírja a mySQL adatbázisszerver által használt karakterkészletet. Bármit csinálok, mindíg utf-8-at ír ki, hiába próbálok a my.cnf-ben karakterkészletet váltani. Beolvassa ezt a fájlt, mert ha direkt rossz hivatkozást írok, hibát jelez.
12

Apache szerver?

Hojtsy Gábor · 2005. Feb. 4. (P), 00.24
Abban simán lehet egy alap karakterkódolás beállítva rosszul.
13

karakterek

Anonymous · 2006. Feb. 28. (K), 15.28
Sikerült neked valami megoldást találnod a problémára. Én is ezzel bajlódok már egy honapja.
14

Talált valaki megoldást?

mocsar · 2006. Feb. 28. (K), 17.29
Ezzel a problémával kezdődött a topic, de nem látok választ. Azóta valaki nem lett okosabb?

Ha phymyadminnal ékezetes karaktereket írok egy mysql 4.1 táblába (akár utf8, akár latin2),
akkor a weblapom nem jeleníti meg jól, annak ellenére, hogy a phpmyadmin jól jeleníti meg.
Tehát a phpmyadmin felületen jól látszanak a karakterek, a sajátomon nem.

Ha én töltöm fel a táblát a
$keres1 = "UPDATE `user` SET `teszt` = '".$_POST['teszt']."' WHERE `name` = 'edit' LIMIT 1 ;";
$eredmeny1 = mysql_query($keres1);
kóddal, akkor minden ok.
(a user tábla karakterkódolása utf8, a $_POST['teszt'] egy text típusú inputbox, és a html charset utf-8.)

Tehát csak a phpmyadminnal van a gond, pedig ő mindent úgy csinál, mintha jó lenne.

És az egész cucc jól mőködik mysql 4.0 alatt...
Mi lehet a megoldás?
15

Tessék elolvasni

Bártházi András · 2006. Feb. 28. (K), 17.33
Ebben le van írva: MySQL 5.0 karakterkódolások

Ha ezután sem világos, akkor még egyszer el kell olvasni - addig, amíg nem lesz világos.

-boogie-
16

<Nincs cím>

mocsar · 2006. Feb. 28. (K), 17.54
Igen, igen. Azóta már megtaláltam a megoldást, neked köszönhetően!
Köszi!