Ü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.
- 1417 megtekintés
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
- A hozzászóláshoz be kell jelentkezni
Kétszer lett UTF-8-ra konvertálva.
iconv paranccsal 2 menetben vissza tudod hozni latin1-re.
- A hozzászóláshoz be kell jelentkezni
Ha megpróbálom utf8 -ról bármire konfertálni akkor hibaüzenetet kapok.
$ iconv --from-code=utf8 --to-code=utf8 adatbazis.sql > /dev/null
iconv: illegal input sequence at position 2109
Az ékezetes betűk rendre ezek:
é = c3 83 c2 a9
á = c3 83 c2 a1
ó = c3 83 c3 b3
--
maszili
- A hozzászóláshoz be kell jelentkezni
ez vi -ben nano -ban vagy akar mcedit -ben hogy nez ki?
- A hozzászóláshoz be kell jelentkezni
Ez egy mantis adatbázis (18MByte) és tele van ékezetes szöveggel.
pl. utf8 karakterkódolás esetén ilyen szöveg van...
Nyomtatvány kedvezményezetti jog megjelölésére
--
maszili
- A hozzászóláshoz be kell jelentkezni
sed -e 's/á/á/g' kidumpolt.txt > utf8-as_a.txt
sed -e 's/é/é/g' utf8-as_a.txt > utf8-as_e.txt
sed -e 's/ö/ö/g' utf8-as_e.txt > utf8-as_o.txt
aztan az osszes ekezetre megcsinalod nincsen sok
áéíóöőúüű
ÁÉÍÓÖŐÚÜŰ
- A hozzászóláshoz be kell jelentkezni
Ha nincs más megoldás akkor kénytelen leszek kicserélgetni a karaktereket
--
maszili
- A hozzászóláshoz be kell jelentkezni
nem tom kde-t hasznalsz-e
nyisd meg kate nevu szovegszerkesztovel a fajlt
es az eszkozok-> kodolas -> unicode -> utf-8 nezd meg nalam ezekre a karakterekre visszaadja a kivantakat
vagy kicserelgeted oket de amig itt beszelunk rola mar regen kicserelhetted volna :-)
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
nyisd meg iso-8859-1 -kent
es allitsd at utf-8 -ra
vagy csereld ki mar a karaktereket :-)
- A hozzászóláshoz be kell jelentkezni
Az iso-8859-1 => utf-8 konverzió esetén sem jók az ékezetes betűk... ezzel kezdtem még mielőtt itt kértem volna segítséget.
--
maszili
- A hozzászóláshoz be kell jelentkezni
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)
- A hozzászóláshoz be kell jelentkezni
Sajnos ebben az esetben ez nem működik mert UTF8 => BÁRMI konverzió esetén a korábban írt hibaüzenettel megáll a konverzió. Ezért nem tudom, hogy mit lehet tenni ilyen esetben.
--
maszili
- A hozzászóláshoz be kell jelentkezni
mint mar irtam sed -del kicsereled a karaktereket
- A hozzászóláshoz be kell jelentkezni