![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam. Zacznę tak : Lepiej zapobiegać niż leczyć
![]() 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 ![]() zamiast ł - ł Kod ś - ś ą - ą ę - ę ż - ż ź - ź ć - ć ń - ń Ż - Ż Ó - Ó Ł - Ł Ć- Ć Ę- Ę Ś - Ś Ą - Ą Ź - Ź Ń - Ń I tak dalej ![]() 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 ![]() 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 ![]() Mam do dyspozycji takie narzędzie ale jakie kodowanie wybrać wejściowe a jakie wyjściowe ? Dostępne kodowania są w tabeli wyżej ![]() http://www.przemo.org/phpBB2/forum/viewtopic.php?t=33530 cos tamte znaki pozmieniało to tu jest: ![]() Ten post edytował tosiek 21.07.2008, 10:20:08 -------------------- |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 42 Dołączył: 22.07.2007 Skąd: /dev/random Ostrzeżenie: (0%) ![]() ![]() |
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
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) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() -------------------- |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 42 Dołączył: 22.07.2007 Skąd: /dev/random Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
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 ![]() I teraz chyba mam bazę w utf8 ![]() ![]() To co teraz robić ? i jak sprawdzić czy to faktycnzie utf8.. bo che omina ć wszelką konwersję przy połączeniach z bazą ![]() Ten post edytował tosiek 21.07.2008, 20:56:21 -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 174 Pomógł: 42 Dołączył: 22.07.2007 Skąd: /dev/random Ostrzeżenie: (0%) ![]() ![]() |
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
i ustaw nagłówek Content-type: text/html; charset=utf8 dla serwowanych dokumentów. |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 142 Pomógł: 0 Dołączył: 7.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Tak wiem że utf8 obsługuje wiele kodowań
![]() 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 ![]() Bo nadal nie pojmuję jak z latin1 przez utf8 doszedłem do ascii ![]() 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 ![]() Ja coś wyzej jest niejasne to po prostu chcę być w 100% powiązany z utf8 ![]() I czemu przy konwersji z bazy nie działało z ascii na utf8 a zadziałało z latin2 na utf8 ? Ten post edytował tosiek 22.07.2008, 10:24:37 -------------------- |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 07:19 |