Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Krzaczki, krzaczki i jeszcze raz krzaczki
Indeo
post
Post #1





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


Odkąd sięgam pamięcią mam problem z polskimi znakami przy komunikacji z mysql. Głównie dotyczy to migracji danych między serwerami. Czy ktoś mi może powiedzieć na co zwracać uwagę przy eksportowaniu/importowaniu danych aby dane we właściwy sposób zostały załadowane do docelowej bazy tak, żeby na stronach wyświetlały się poprawnie znaki narodowe?


Mam serwer A ze starą stroną oraz
serwer B, gdzie chcę wszystko przenieść

Exportuję dane z serwera A. Oglądam dane w notatniku - polskie znaki są zapisane w postaci krzaczków, w definicji tabel dopisane jest "DEFAULT CHARSET=latin2"

Importuję dane na serwer B. Na stronie krzaczory. W skrypcie serwisu logującym sie do bazy dopisuję wykonanie zapytania
  1. SET names latin2


Krzaczory nadal. To samo robię z utf8 i nadal krzaczory (troche inne)

Loguję się z poziomu wiersza poleceń. Używam różnych "set names xxx". Za każdym razem widzę w wynikach krzaczory podczas gdy wydaje mi sie, że powinny się wyświetlać polskie znaki.


Co jest grane? Co robię źle?


--------------------
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
sf
post
Post #2





Grupa: Zarejestrowani
Postów: 1 597
Pomógł: 30
Dołączył: 19.02.2003
Skąd: Tychy

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


Po pierwsze robisz na pałę, zamiast zrozumieć na czym to polega.

W jakim kodowaniu masz zrobioną kopię bazy danych ?
W jakim kodowaniu jest utworzona nowa baza danych ?
W jakim kodowaniu importujesz bazę danych jeśli korzystasz z phpmyadmin ?

Mogę tylko wróżyć, ale jak dla mnie to pierwsza baza najprawdopodobniej miała np. kodowanie latin1, a Ty np tam ładowałeś latin2 lub utf-8 i teraz przy eksporcie może pojawić się syf. Jeśli nie umiesz się połapać to po prostu komuś to zleć, pewnie za 50 pln ktoś się znajdzie, a jak sam chcesz to zrobić to ustal gdzie masz jakie kodowanie.

Acha i notatnik nie jest narzędziem programisty.. zaopatrz się w edytor, który obsługuje różne kodowania.


--------------------
Zapraszam na mój php blog, tworzenie stron.
Go to the top of the page
+Quote Post
Indeo
post
Post #3





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


Pewnie, że robię na pałę, bo po 5 różnych podejściach nie wiem już czego próbowałem a czego nie winksmiley.jpg
Po pierwsze - czy kodowanie pliku eksportu zależy od serwera z którego pochodzi? Zapewne tak. A może zalezy od dumpującego programu?? Serwer miał kodowanie utf8.
Serwer docelowy też ma kodowanie utf8. Import wykonuję z wiersza poleceń - chyba trudniej o bardziej kompetentne narzędzie? Po imporcie na stronie - krzaczory. Jedyna sytuacja, w której import się udał to import phpmyadminem ze wskazaniem, że importowany plik sql ma kodowanie utf8. Dziś w taki sposób sie udało. Choć phpmyadmin wydaje sie słabym narzędziem do manipulacji dużymi plikami. Co następnym razem? Nie wiem. Domyslam się, że powodem dlaczego import z poziomu wiersza poleceń sie nie udał był brak zdefiniowanego kodowania pliku sql (phpmyadmin sie pytał).
Konwertowanie pliku gżegżółką na niewiele się zdało, bo niezależnie od kodowania i tak konsola pakowała do bazy krzaki.
Co ciekawe - po przekonwertowaniu pliku .SQL z kodowania utf8 na ISO 8859-2 (Europa Środkowa) , gżegżółka plik zaczęła rozpoznawać plik jako Windows 1250 (Europa Środkowa) i ochoczo zaproponowała mi przekodowanie na ISO 8859-2 (Europa Środkowa) smile.gif
Przerażony oczyma wyobraźni widzę te 3 GB danych z serwera w firmie z tysiącami dokumentów w polach typu blob jak ulegają transformacji, po której już nie tyle, że są krzaczory ale szlag trafia wszystkie binarne dane.

Zatem:
1) jak poinformować konsole, że plik ma określone kodowanie?
2) skoro sprawy kodowania są tak istotne przy migracji danych to dlaczego w pliku eksportu nie ma jednoznacznej informacji o sposobie kodowania pliku tak żeby nie trzeba było go odgadywać? (konsola widać w ogóle nie fatygowała się sprawdzaniem kodowania pliku) tym bardziej frustrujące, że skoro migracja danych ma miejsce między instancjami tego samego programu to twórcy mogliby się wysilić. To tak jakby msword w wersji 10.0 nie umiał otworzyć pliku worda w wersji 6.0, bo nie wiedział jaka to wersja smile.gif

Co ciekawe w pliku my.ini mam zapis:
default-character-set = utf8

Może za bardzo ironizuję, ale chciałbym poznać zasadę jak się to odbywa.


--------------------
Go to the top of the page
+Quote Post
Cezar708
post
Post #4





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

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


Hmm, a mogę zapytać w jaki sposób Ty widzisz te `krzaczory`? Czy dane oglądasz poprzez phpMyAdmina, czy może poprzez własną aplikację? A może i apache jest nowy?

Kiedyś miałem podobny problem z migracją danych ale okazało się, że serwer miał w httpd.conf ustawione DefaultCharset utf8 i to mi wszystko się przez to krzaczyło.

Pozdrawiam
Go to the top of the page
+Quote Post
Indeo
post
Post #5





Grupa: Zarejestrowani
Postów: 295
Pomógł: 7
Dołączył: 26.03.2004
Skąd: Opole

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


Krzaczki generalnie widzę na stronie. Po połączeniu z bazą daję
  1. SET names latin2
, bo bez tego są krzaczory. Inne strony na moim serwerze działają poprawnie - np. świeżo zainstalowany joomla, czy phpbb. Dane zawsze oglądam z wielu stron - głównie w wierszu poleceń lub MYSQL-Front'em (świetny program , projekt został zabity przez producenta mysql i odżył jako sql-front, ale poprzedni program był lepszy) Wiem, że sposób wyświetlania na stronie może być uwarunkowany konfiguracją apache i php. Ale ta strona naprawdę poprawnie działała tylko chciałem odświeżyć dane biorąc je z "oryginału" znajdującego się na innym serwerze i wtedy już wyskoczyły krzaczory. Na obecną chwilę jedyny sposób w jaki jestem w stanie wrzucić dane i wyświetlić je poprawnie to użyć phpmyadmina (zamiast konsoli, której zawsze używam) i dopisanie do skryptów łączących się z bazą "set names latin2" (bez tego nadal są krzaczory).

Pytanie brzmi: jak zrobić to za pomocą konsoli (wiersza poleceń). A najlepiej jak to zrobić tak, aby nie musieć dodatkowo dopisywać tego "set names latin2"


--------------------
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 Aktualny czas: 20.08.2025 - 12:03