Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Zmiana kodowania danych na UTF8 z poziomu MySQLa?, wiele baz i jeszcze więcej danych
tryme
post 30.08.2013, 15:54:26
Post #1





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.12.2005

Ostrzeżenie: (0%)
-----


Witam Serdecznie,

Muszę zmienić kodowanie danych w tabelach (kolumna text, kodowanie latin1_swedish_ci) na UTF-8 (text, utf8_general_ci). Mam wiele baz z tysiącami rekordów w tabelach. Chciałbym zrobić to najlepiej za pomocą poleceń MySQLa niż skryptem PHP a tym bardziej dumpowaniem baz i konwertowaniem znaków za pomocą iconv.

Próbuję poniższych komend

  1. ALTER TABLE tabela CHARACTER SET utf8;
  2. ALTER TABLE tabela CHANGE kolumna kolumna BLOB;
  3. ALTER TABLE tabela CHANGE kolumna kolumna TEXT CHARACTER SET utf8;


lecz po ich wykonaniu dane w tabeli są ucinane od miejsca, gdzie powinien występować polski znak (np. dla danych KOŃ JEST FAJNY zmieni na KO).

Próbuję również takich komend

  1. ALTER DATABASE baza CHARACTER SET utf8 COLLATE utf8_general_ci;
  2. ALTER TABLE baza.dane CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;


lecz tutaj kodowanie się nie zmienia.

Co robię źle?

Czy da się to w ogóle wykonać taką operację z poziomu MySQLa?

Problem udało się chyba rozwiązać samemu yahoo.gif

Wpierw zmiana z latin1 na latin2 a potem utf8.

  1. ALTER TABLE tabela CHANGE kolumna kolumna BLOB;
  2. ALTER TABLE tabela CHANGE kolumna kolumna TEXT CHARACTER SET latin2;
  3. ALTER TABLE tabela CHANGE kolumna kolumna TEXT CHARACTER SET utf8;


Problemów ciąg dalszy.

Jak zmienić bezboleśnie znaki specjalne Latin-1 wyglądające mniej wiecej tak: &# 169; (oczywiście bez spacji w środku)?

Ten post edytował tryme 30.08.2013, 15:56:29
Go to the top of the page
+Quote Post
Prezi2907
post 11.09.2013, 08:52:00
Post #2





Grupa: Zarejestrowani
Postów: 107
Pomógł: 4
Dołączył: 11.08.2010
Skąd: Inowrocław

Ostrzeżenie: (10%)
X----


html_entity_decode() powinno załatwic sprawę ale to już po stronie PHP a nie samej bazy smile.gif
Go to the top of the page
+Quote Post
tryme
post 11.09.2013, 09:29:05
Post #3





Grupa: Zarejestrowani
Postów: 83
Pomógł: 0
Dołączył: 5.12.2005

Ostrzeżenie: (0%)
-----


Dziękuję za informację.

Robię tak:

  1. $dane = html_entity_decode($pytanie[0], ENT_QUOTES, "UTF-8");
  2. mysql_query("UPDATE tabela SET dane=$dane WHERE id=...");



Czy powinienem zwrócić uwaga na jakieś wyjątki lub sposób updatowania do bazy mysqla, aby zabezpieczyć się przed częściową utratą danych?

Ten post edytował tryme 11.09.2013, 09:30:11
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 29.04.2025 - 07:00