mysql dump karakterkódolás

Fórumok

Üdvözletem mindenkinek,

Egy sajnálatos félreértés miatt egy adatbázis összes adata csak egy mysql logikai dump-ban van meg. Szeretném visszaállítani egy új adatbázisba de a karakterkódolással gondok vannak.

Ha hexa editorral megnézem a fájlt akkor pl. egy é betű kódolása a következő c3 83 c2 a9

A tábla definíciók során az szerepel, hogy CHARSET=latin1;

Ha megpróbálom betölteni az adatbázis dumpot eképpen:

cat adatbazis.sql | mysql --default-character-set=latin1 adatbazis

Akkor nem jók az ékezetek. Szintén hibás a --default-character-set=utf8 paraméterrel is.
Próbáltam iconv segítségével a latin1->utf8 és utf8->latin1 kódolást is. Utóbbi esetben ezt kapom: iconv: illegal input sequence at position 2109

Tehát itt valami nagy kavarodás lehet...

Milyen módon lehetne helyes karakterkódolással visszatölteni az adatbázis dumpot?
A válaszokat előre is köszönöm.

Hozzászólások

Ha kovetkezetesen a é betu mindig c3 83 c2 a9
es a tobbi ekezetes is megfeleloen mas de ugyanarra ugyanaz
akkor egy csere mind pl a kedvenc szovegszerkesztodben
persze utf-8 karakterkodolasban tedd mindezt

ja es ne felejtsd el cserleni a CHARSET=latin1-et sem utf8-ra es ugy told fel az adatbazist

Kétszer lett UTF-8-ra konvertálva.
iconv paranccsal 2 menetben vissza tudod hozni latin1-re.

Azzal kezdtem hogy a kate segítségével próbáltam megállapítani, hogy milyen kódolás lenne a megfelelő. De sajnos egy 18MByte-os fájl esetén aminek egy sora akár egy magabájt is lehet, nem könnyű... leginkább belerohad a szövegszerkesztő. A nano is :)

--
maszili

a miből mibe-t nem igy csinálnám. Volt már, hogy én is 2x toltam át az adott fájlt másik kódolásba, visszafele:
utf8-ból latin1, majd a kapott fájlra ismét ráengedtem: utf8-ból (átverve az iconv-t) latin1-re. Így ismét eltolta a karaktereket, immár jó lett.
Trhát utf8(infile)->latin1(outfile); utf8(outfile)->latin1(outfile2)

(Lehet, hogy nem pont ebbe az irányba történt, hanem a másikba és nem latin1-be, hanem latin2-be, de az elv ugyanaz. Működött)