Átalakítás mysql db származó latin1 vagy cp1251 kódolást és minden adatot az adatbázisban szereplő adatok utf-8

Néha, ha az importáló az elkészült adatbázis állunk szemben, hogy meg kell változtatni a kódolás (akár cp1251 latin1, vagy valami mást) utf8. Így meg kell változtatni a kódolás és a legtöbb MySQL adatbázis és az összes táblák és mezők. Manuálisan törölje ezt a hülye időpocsékolás. Hogyan lehet szabni a kijelző az adatok az adatbázisból a megfelelő kódolás?







1. módszer: Ha nincs ideje ásni, meg kell csinálni gyorsan!

Tegyük fel például, mi táblák az adatbázisban van kódolva latin1. és az adatok - cp1251. Tesszük sleuyuschee:
- export adatbázis kódolt latin1;
- (*) Convert adatok (lásd alább példaként iconv szkriptek) származó cp1251 utf8; (Ha az adatok nem orosz karaktereket, akkor valószínűleg kihagyja);
- cserélje ki a lerakó minden társult latin1 utf8 segítségével keresés és csere tömeg körül billenő adatbázis;
- hozzon létre egy új adatbázist utf8 vagy távolítsa el az összes táblát a régi bázis;
- kibont (import) Billenő már utf8 adatokat egy új adatbázist.

* - A következő script fájlokat keresi az aktuális könyvtárban a kiterjesztése * .java. recodes őket UTF-8 és az eredmény bekerül a mappába res

recoding az összes fájlt egy könyvtárba azok cseréje

vagy szükséges fájlok típusát, majd rekurzívan (a példában txt fájl):

vagy úgy (rekurzív átkódolás összes html fájlokat):

2. módszer: Azt akarjuk érteni, mi az, ami!

Charset a MySQL adatbázis - helyesen - azok, amelyek megfelelnek nekünk és a rossz -, hogy nem kell. Ha van egy hely az orosz és az adatbázis van kitéve latin1 kódolást, akkor ez a második lehetőség -, hogy van ez a kódolás nem teljesül. Vagyis, mi szükség van a különböző kódolás - cp1251 (natív kódoló windose), vagy utf-8 (most gyorsan lendületet használatban). Ezért az esetek többségében latin1 használnak - és az ok valószínűleg az, hogy a MySQL az alapértelmezett beállítás meghatározza latin1 kódolást az újonnan létrehozott adatbázis, és valószínűleg azért, mert a fejlesztők élnek és kodyat Svédországban. Ha a telepítés és / vagy konfiguráció nem zavarja, hogy változik, így marad az alapértelmezett (by the way, akkor valószínűleg figyelembe veszi - ha tárhelyszolgáltatóját létrehozza az adatbázis kódolási alapértelmezett latin1 feltételezhető, hogy nem változtatta meg az alapértelmezett, és ez viszont jelezhet alacsony képzettségi szint, vagy ő csak lusta, hogy így is van egy nagyon rossz ...). De ez nem az alapértelmezett, és a gazda, és az esetleges problémákat. Igen, az oldal fog működni, és a szöveg jelenik meg a normál -, de például ha keres akarat kérdése nem az, amit kérsz.







Én szembe a rossz kódolás, amikor beállította Connect with Facebook joomla, továbbá az átadás egyik szerverről a másik adatbázisba torrent tracker, nos, valóban mindenhol, ahol eredetileg beállítva.

Ha megy, hogy olvassa el a dokumentációt, akkor feltételezhető, hogy van itt

Ha meg akarjuk változtatni a táblázat alapértelmezett karakterkészlet és minden karakter oszlopok (CHAR, VARCHAR, TEXT) egy új karakterkészlet, használjon egy nyilatkozatot, mint ez:

ALTER TABLE tbl_name CONVERT karakterkészlet charset_name;

De ha tovább olvasni

Figyelmeztetés: A fenti művelet átalakítja oszlop közötti értékek a karakterkészletet. Ez nem az, amit akarsz, ha van egy oszlop egy karakterkészlet (mint latin1), de a tárolt értékek ténylegesen használni más, kompatibilis karakterkészlet (mint cp1251). Ebben az esetben meg kell tennie a következőket minden ilyen oszlop:

ALTER TABLE t1 MÓDOSÍTÁSA c1 c1 BLOB;
ALTER TABLE t1 MÓDOSÍTÁSA C1 C1 karakterkészlete cp1251;

Ez egyszerűen átalakítani nem sikerül, akkor először meg kell hozni bináris adatokat. Ez is lehetséges. De! Meg kell végre ezt a lekérdezést minden oszlop a táblázatban. Ha ezt kézzel is lehetséges, hogy lebontják a kulcsokat kell írni lekérdezések olyan sokáig.

Sok kutatás után és szenvedést a végleges változat így néz ki:

1. Ismerje meg, hogyan kell kódolni adataink az adatbázisban
Nyílt phpmyadmin, úgy döntünk adatbázisunkban és nézd meg az oszlop Összehasonlító táblázatok - az én esetemben - latin1_swedish_ci.
Azaz, azt kell latin1_swedish_ci (svéd, kis-és nagybetűket) - Kéri, amiért az orosz nyelvű honlap adatok tárolására kódolt svéd?

2. tárolása dump (backup) kódolt latin1
Meg kell forgatni úgy, hogy nem történt volna meg, nem olvasta a hús. Ez történik a szerver konzolon

felhasználó - felhasználó neve az adatbázis eléréséhez
jelszó - a felhasználói jelszó
bdname - adatbázis nevét amelyhez billenő
-default karakteres-set = latin1 e fő hangsúly - egyenlőségjel után kell írni a kódoló az adatbázisban.

3. recoding a kiírási a megfelelő kódolás és a szükséges beállításokat

Hozzárendelése kulcsok az alábbiak szerint:
-f ISO-8859 - átalakítani a ISO-8859 kódolás (akkor kérheti, hogy miért iso-8859-1 helyett latin1, mert ez ugyanaz a dolog, és ne feledje, hogy lehet, hogy egy másik kódolás)
-T UTF-8 - UTF-8 kódolást
dump_bdname.sql - file amit majd átalakítani
dump_bdname_utf8.sql - az eredményeket a fájlba
Ez a csapat már minden, ami a latin1 remake UTF8.
Továbbá abban az esetben a probléma, akkor lehet kezdeni egy kulcs -c (ugrás a visszavonását érvénytelen karakter).

(Opció Vindovs - lehet nyitni Notepad ++ például kattintva válasszuk ki az összes (Ctrl + A), vágott (Ctrl + X), majd válassza Kódolások - átalakítani UTF-8 betét (Ctrl + V).)

4. Az igazítás megfelelő alapértelmezett CHARSET
Tehát van egy szeméttelep, és mi a helyes kódolást. De ez is egy írásos irányelv SET NEVEK codepage; és DEFAULT CHARSET codepage;
A következő parancs futtatásával lecseréli az összes utalást a kiírási latin1 utf8

(Opció windose - ismét a Notepad ++ segítségével kutat, és cserélje ki az összes latin1 utf8)

5. Állítsa vissza az adatbázist a konvertált lerakó
Ez a parancs öntünk, mint mi kiírási új tábla (amelyet előzőleg létre kell hozni)

Ezután nyugodtan élvezheti a bázis, amely most a megfelelő kódolás.

PS: Ez megvalósítható, ha van (ssh) hozzáférést biztosít a szerver shell.

Üdvözlet! Orosz feliratok a footer által a modul vagy a sablon test?




Kapcsolódó cikkek