Cum să transcodezi o bază de date de la cp1551 la utf8, mysql

Baza de date este utf8, iar textul din cs1551 este ceea ce trebuie să faceți?
Finalizat (1). nu 1551 dar 1251 :)
Finalizat (2). ce solicitare trebuie să fac pentru a înlocui codificarea?
Se completează (3). prin phpmyadmin






Finalizat (4). none7
sunteți în direcția corectă cum să scrieți corect o interogare?
baza: u39786_4
codificarea necesară: UTF8
Finalizat (5). Și dacă întreaga bază de date trebuie să fie recodificată?
Finalizat (6). MySQL

Care este baza? De regulă, când vă conectați, puteți seta în mod explicit codificarea
de exemplu mysql
mysql_query ("SET NAMES utf8");

SET NAMES codificare

sau dacă lucrați prin php
mysql_set_charset ("utf8");

cel mai bun răspuns În modul meu logic de a recoda textul din baza de date în codarea corectă. Modificați doar câmpul de codificare este imposibil, datele vor fi pierdute iremediabil. Când am întâlnit o persoană similară, am găsit o asemenea cârpă.
SELECT CONVERT (UNEX (FROM (LEX ('Text'.) Utilizarea cp1251) din tabelul LIMIT 1;
Cred că puteți scrie o interogare ca UPDATE Table SET Text = CONVERT (UNEX (folosind HEX ('Text') folosind cp1251). Dar înainte de a verifica, vă recomand să faceți un tabel de backup.







Suplimentul # 4
Baza de date nu are nimic de-a face cu aceasta, folosesc interogarea UPDATE descrisă mai sus, dar înlocuiesc tabelul cu numele tabelului meu și textul cu numele câmpului din acest tabel. Codificarea ar trebui să fie configurată teoretic, însă dacă există o eroare, încercați CONVERT (UNHEX (HEX ('Text' folosind cp1251) utilizând utf8).

Suplimentul # 5
Apoi trebuie să scrieți pentru fiecare tabel UPDATE Tabelul SET column1 = convert (...), column2 = convert (...), column3 = convert (...), ... În cazul în care columnX numește câmpurile care trebuie convertite. Sau scrieți un script care va converti toate câmpurile de tip char și varchar pentru fiecare tabel al bazei de date.

Extras din documentația PostgreSQL:
--- BEGIN ---
Folosind SET client_encoding TO. Setarea codării clientului se poate face cu această comandă SQL:

SET CLIENT_ENCODING Pentru a "valori";
De asemenea, puteți utiliza sintaxa standard SQL SET NAMES pentru acest scop:

NUMĂRUL NIMENELOR SETATE;
Pentru a interoga codificarea curentă a clientului:

Arăta client_encoding;
Pentru a reveni la codificarea implicită:

RESET client_encoding;
--- END ---

și apoi trebuie să utilizați pg_escape_string ($ connect, $ string) pentru a construi interogări care conțin șiruri de text.

P.S. Pe alte DBMS nu voi spune că nu am făcut-o cumva.







Articole similare

Trimiteți-le prietenilor: