Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Kodowanie mysql - rodzaje, przestawianie i konwersja
Forum PHP.pl > Forum > Bazy danych > MySQL
tosiek
Witam. Zacznę tak : Lepiej zapobiegać niż leczyć winksmiley.jpg

Czyli aktualnie miałem bazę mysql w latin1 bo tak było w standardzie mojego 1 hostingu ;/ Aktualnie chcę się przesiąść na utf8. Ale zaczynają się schody bo po eksporcie bazy do pliku jako utf8 polskie znaki zakodowały się jakoś dziwnie bo chyba w utf8 na jeden znak polski przypadają jakieś dwa znaczki np wg tej tabeli:

W utf8 przypadają 2 znaki winksmiley.jpg A ja najprawdopodobniej w bazie mam po jednym np;
zamiast ł - ł
Kod
ś - ś
ą - ą
ę - ę
ż - ż
ź - ź
ć - ć
ń - ń
Ż - Ż
Ó - Ó
Ł - Ł
Ć- Ć
Ę- Ę
Ś - Ś
Ą - Ą
Ź - Ź
Ń - Ń

I tak dalej winksmiley.jpg I to jest chyba mieszanka z latin1 bo typowej konwersji nie przeprowadziłem. Tylko wyeksportowałem wcześniej jak utf8 zmieniłem ustawienia bazy takimi zapytaniami:
Kod
ALTER DATABASE `utf8` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
SET CHARACTER SET utf8;
SET collation_database = utf8_general_ci;

I wgrałem od nowa winksmiley.jpg I forum się nie wykrzaczyło ( mam phpbb by przemo ) ale teraz jestem ciekawy jak to przerobić na prawdziwe utf8 i czy te zapytania zmieniają wszystkie potrzebne ustawienia ?

A co do ustawień to ile jest kodowań ? Tzn nie o rodzaje ale o ilość bo jest kodowanie jakie wysyła plik łączący się z baza potem jakie są ?
I do czego służy System porównań dla połączenia MySQL: ?

Bo po prostu chcę pominąć konwersję zapytań żeby wszystko odbywało się w jednym kodowaniu winksmiley.jpg I żeby jak najszybciej ^^

Mam do dyspozycji takie narzędzie ale jakie kodowanie wybrać wejściowe a jakie wyjściowe ? Dostępne kodowania są w tabeli wyżej winksmiley.jpg
http://www.przemo.org/phpBB2/forum/viewtopic.php?t=33530


cos tamte znaki pozmieniało to tu jest:
artega
tosiek, wykonaj po prostu mysqldump -u uzytkownik --default-character-set=utf8 baza > plik.sql. Oczywiście zastąp polecenie odpowiednimi wartościami a jeżeli nie masz dostępu do mysqldump to przed zapytaniami zrzucającymi dane i strukture bazy wykonaj
  1. SET NAMES utf8
po czym otwórz plik bazy edytorem który obsługuje kodowanie utf8 i zmień w zapytaniach tworzących strukture tabel CHARSET na utf8 zamiast latin1 i po sprawie - baza sam zajmie się resztą. Podczas importowania danych do nowej bazy nie zapomnij ustawić domyślnego kodowania znaków na utf8 tym samym poleceniem które podałem wyżej.
Cytat
I do czego służy System porównań dla połączenia MySQL: ?

Gdyby manual działał w chwili gdy to pisze odesłał bym do niego ale... na Twoje szczęście nie działa. System porównań znaków pozwala np. posortować ciągi znaków w odpowiedni sposób by wyrazy zaczynające się na literę ć nie lądowały na końcu listy posortowanej tylko zaraz po c (to tłumaczenie na chłopski rozum w dużym skrócie)
tosiek
Poustawiałem i zrobiłem wszystko jak kazałeś ale i tak nadal na jeden znak przypada jeden zamiast dwóch ;/

I wychodzi nadal że mam ascii iso 8859-2 ;/A ja chcę utf8 winksmiley.jpg
artega
Cytat
Poustawiałem i zrobiłem wszystko jak kazałeś ale i tak nadal na jeden znak przypada jeden zamiast dwóch ;/

Skąd taki wniosek? (nie oszczędzaj się w słowach)
Cytat
ascii iso 8859-2

Skoro ASCII to już nie ISO winksmiley.jpg
tosiek
Bo gdy robię eksport nie do pliku ale żeby podejrzeć to nadal jest ascii ;/ Zrobiłem konwersje bazy z latin2 do utf8 konwerterem i forum się wykrzaczyło w taki sposóB:
Kod
Test znakĂĹ‚w diakrytycznych', 'Zaşółć gęślÄ… jaźń\r\nZAŝÓĹ�Ć GÄ˜ĹšLÄ„ JAĹšĹƒ


Tam jest pierwsza część tego postu:
http://www.tosiek.pl/topics4/test-znakow-d...znych-vt385.htm

Oczywiście tamten ciąg jest z podglądu bazy i na localu umnie winksmiley.jpg
I teraz chyba mam bazę w utf8 winksmiley.jpg ale forum nie może obsłużyć tongue.gif

To co teraz robić ? i jak sprawdzić czy to faktycnzie utf8.. bo che omina ć wszelką konwersję przy połączeniach z bazą winksmiley.jpg
artega
Cytat
Bo gdy robię eksport nie do pliku ale żeby podejrzeć to nadal jest ascii

Dla pewności tylko dopiszę... UTF8 to kodowanie o zmiennej długości tzn. że jeden znak może mieć długość od jednego do czterech bajtów. Jest zgodny z ASCII dlatego nie widzisz różnycy w podstawowych znakach. Jeżeli nadal nie jesteś pewny jakie kodowanie używa baza danych, wykonaj
  1. STATUS

i ustaw nagłówek Content-type: text/html; charset=utf8 dla serwowanych dokumentów.
tosiek
Tak wiem że utf8 obsługuje wiele kodowań winksmiley.jpg A i STATUS nie działa ;/
Kolejność moich poczynań:
1. Eksport bazy w latin1 do pliku jako utf8
2. Import jako utf8
3. W bazie było ascii
4. Czemu się ascii zrobiło ? Ja chce w utf8 żeby ominąć jakąkolwiek konwersję czyli przyspieszyć forum i przystosować to co trzeba w phpbb by przemo do utf8 i chyba trzeba coś w pliku łączącym się z baza poprawić na utf8 winksmiley.jpg

Bo nadal nie pojmuję jak z latin1 przez utf8 doszedłem do ascii winksmiley.jpg

5. Konwersja bazy do utf8
6. Wykrzaczyło się forum i pokazały się chyba prawidłowe zakodowane znaki dla utf8
7. Mam zmienić te nagłówki ale ..? Mam phpbb by przemo i one są w każdym pliku ?
A i od od pewnej osoby wiem że musiałbym także prze konwertować pliki językowe i w pliku lang_main zmienić
$lang['encoding'] z ISO-8859-2 na UTF-8

Ale np gdy gżegżółką konwertuje pliki do utf8 to wychodzi mi latin2 czyli wszystkie znaki czyste ;/ I już tego nie rozumiem ;/ Bo ja tu jedno kodowanie a baza lub forum lub coś innego wywala mi drugie a jak coś zrobię wychodzi 3 winksmiley.jpg Ale mam konwerter żeby prze konwertować bazę i co dalej ? Chyba mam już wszystkie możliwe ustawienia w utf8 ...

Ja coś wyzej jest niejasne to po prostu chcę być w 100% powiązany z utf8 winksmiley.jpg Czyli co dalej zmienić po tych plikach językowych ?

I czemu przy konwersji z bazy nie działało z ascii na utf8 a zadziałało z latin2 na utf8 ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.