![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 1 Dołączył: 21.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Zauważyłem, że w mojej bazie danych MySQL polskie znaki zachowywane są w dziwny sposób:
Kod "Ä…"=>"ą" "ć"=>"ć" "Ä™"=>"ę" "ó"=>"ó" "Å‚"=>"ł" "Å„"=>"ń" "Å›"=>"ś" "ż"=>"ż" "ź"=>"ź" "Å�"=>"Ł" "Ó"=>"Ó" "ü"=>"ü" "ä"=>"ä" "Å‘"=>"ö" "Å�"=>"Ö" Strona, która na moim serwerze wyświetla dane z bazy ma kodowanie UTF-8 i wyświetla znaki poprawnie. Kiedy zrobię zrzut bazy i zaimportuję go na inny serwer przez phpMyAdmin, to polskie znaki mają postać niepoprawną mimo takiej samej strony wyświetlającej je. Jakim programem skonwertować te niepoprawne znaki na ich odpowiedniki w UTF-8? -------------------- Juvenia Kraków Rugby Klub
Pobierz Google Chrome! |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 20 Pomógł: 0 Dołączył: 23.10.2007 Ostrzeżenie: (0%) ![]() ![]() |
A próbowałeś
Kod "SET NAMES 'utf8'"
|
|
|
![]()
Post
#3
|
|
![]() Newsman Grupa: Moderatorzy Postów: 2 033 Pomógł: 290 Dołączył: 21.12.2007 Skąd: Łódź ![]() |
Przy imporcie przez phpMA ustaw właściwy zestaw znaków dla importowanej bazy, może to jest przyczyną ("Kodowanie pliku")
-------------------- Life's simple... You make choices and don't look back...
|
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 1 Dołączył: 21.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Sęk w tym, że w UTF-8 jest cały phpMyAdmin, importowanie plików jako UTF-8, jak na mojej stronie (też z kodowaniem UTF-8) dam "set names utf8" to wyświetla właśnie takie krzaczki jak powyżej, a jak nie dam to wyświetla znaki zapytania zamiast polskich znaków w Firefoxie.
Mam wrażenie, że te polskie znaki zapisane są w jakiejś odmianie Unicode, gdyż 1 znak zajmuje 2 bajty (tak jak przy UTF-8). -------------------- Juvenia Kraków Rugby Klub
Pobierz Google Chrome! |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat są w jakiejś odmianie Unicode, gdyż 1 znak zajmuje 2 bajty (tak jak przy UTF-8). Gdyby był unicode, to wszystki znaki by tyle zajmowały. UTF zapisuje dwubajtowo znaki wykraczające poza zakres ASCII. Cytat jak na mojej stronie (też z kodowaniem UTF-8) dam "set names utf8" to wyświetla właśnie takie krzaczki jak powyżej, a jak nie dam to wyświetla znaki zapytania zamiast polskich znaków w Firefoxie. Dopisz to samo zapytanie do pliku, który importujesz. (na początku ![]() -------------------- ![]() ZCE :: Pisząc PW załączaj LINK DO TEMATU i TYLKO w sprawach moderacji :: jakiś błąd - a TREŚĆ BŁĘDU? :: nie ponaglaj z odpowiedzią via PW! |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 1 Dołączył: 21.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Gdyby był unicode, to wszystki znaki by tyle zajmowały. UTF zapisuje dwubajtowo znaki wykraczające poza zakres ASCII. Unicode to tylko zestaw znaków, a UTF-8 to właśnie jeden z systemów ich kodowania.Dopisz to samo zapytanie do pliku, który importujesz. (na początku Dopisałem, dalej mam krzaczki zamiast polskich liter.![]() Natomiast znalazłem ten ciekawy post, przydałoby się takie bbWP2UTF8 dla dowolnych plików SQL, bo ręcznie mi się wszystkich polskich znaków nie uśmiecha zamieniać. -------------------- Juvenia Kraków Rugby Klub
Pobierz Google Chrome! |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 55 Pomógł: 7 Dołączył: 8.12.2003 Skąd: Andrychów Ostrzeżenie: (0%) ![]() ![]() |
Zawsze mnie dziwią te problemy z kodowanie znaków w bazach danych a już szczególnie wówczas jak dane mamy wszędzie w utf-8. Przecież recepta na to jest prosta:
- zwracaj uwagę na kodowanie znaków przy połączeniu (w phpMyAdmin zaraz po zalogowaniu masz info z jakiego rodzaju kodowania korzystasz, w aplikacji wystarczy zapytanie)
lub
- jeżeli tworzysz tabelki ustawiaj im kodowanie na utf8 - jeżeli tworzysz kolumny ustawiaj im również kodowanie na utf8 - nie otwieraj zrzutów bazy danych notatnikiem tylko jakimś innym edytorem potrafiącym sprawdzić sobie kodowanie pliku tekstowego - uważaj na edytory bo niektóre wstawiają do utf8 znacznik kolejności bajtów (BOM) który w UTF-8 jest nieobowiązkowy PS Jeżeli masz już zrypany zrzut bazy (czytaj krzaki w pliku) to poszukaj programu Gżegżółka ![]() PS 2 Dla pewności wstawi jeszcze na początku pliku w którym wysyłasz dane do przeglądarki
Zmień oczywiście typ zwracanego dokumentu jeżeli jest nie poprawny ![]() No i jeszcze dla pewności w IE
Ten post edytował Roly 3.06.2009, 13:40:10 -------------------- adminvps.pl
|
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 61 Pomógł: 1 Dołączył: 21.05.2009 Ostrzeżenie: (0%) ![]() ![]() |
Przecież już pisałem, że wszędzie mam UTF-8, zarówno w HTML-u jak i w połączeniu z bazą (SET NAMES utf8). Natomiast dane w pliku eksportu są zapisane takimi krzaczkami. Próbowałem już Gżegżółką, ale tam jest tylko ISO<->UTF8 i WIN1250<->UTF8, a ja potrzebuję coś jak DZIWNY_UTF8<->UTF8.
Nie mogąc się doczekać odpowiedzi zrobiłem prosty skrypt w PHP:
-------------------- Juvenia Kraków Rugby Klub
Pobierz Google Chrome! |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 203 Pomógł: 6 Dołączył: 11.09.2005 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam dokładnie taki sam problem, czy to wina baz danych? |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 25.04.2025 - 05:22 |