[PHP] Dziwna sprawa z kodowaniem |
[PHP] Dziwna sprawa z kodowaniem |
21.01.2009, 17:22:22
Post
#1
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 27.10.2004 Ostrzeżenie: (10%) |
Otóż mam mały cms zmieniłem wszystko tak żeby było latin2/ISO-8859-2 w bazie/php i w niektórych miejscach mam polskie znaki a w niektórych nie.
Przykładowo podczas edycji artykułu: W polu tytułu są polskie znaki prawidłowo (w bazie jak i na stronie są ok w 100%). W polu tekstu podczas pisania polskich znaków pierwszy raz znaki są na stronie i w bazie prawidłowo, problem pojawia się gdy chce edytować ten tekst wtedy zamiast polskich znaków pojawiają się ±¶Ľˇ¦¬ (tylko ó normalnie jest) i gdy kliknę "zapisz" owe znaki również zapisują się na stale w bazie zamiast pl znaków. Ma ktoś propozycje czego to może być wina, bo wygląda tak jakby "edytor" miał problemy z pobieraniem pl znaków z bazy? Bardzo proszę o pomoc. Ten post edytował pistolet 21.01.2009, 17:31:17 |
|
|
21.01.2009, 17:44:58
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 568 Pomógł: 192 Dołączył: 7.03.2005 Skąd: Warszawa Ostrzeżenie: (0%) |
Daj to po połączeniu z bazą
Ten post edytował potreb 21.01.2009, 17:45:33 -------------------- |
|
|
21.01.2009, 17:49:15
Post
#3
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 27.10.2004 Ostrzeżenie: (10%) |
Dodane nic nie daje konkretnie to mam:
Kod mysql_query('SET CHARACTER SET latin2');
mysql_query('SET collation_connection = latin2_general_ci'); |
|
|
21.01.2009, 17:56:40
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 568 Pomógł: 192 Dołączył: 7.03.2005 Skąd: Warszawa Ostrzeżenie: (0%) |
Może dla edycji nie masz ustawionego kodowania, a dla dodawania tekstu już masz. Używasz jednego połączenia z bazą
-------------------- |
|
|
21.01.2009, 20:56:16
Post
#5
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 27.10.2004 Ostrzeżenie: (10%) |
Tak jedno połączenie z baza.
|
|
|
21.01.2009, 21:06:25
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 568 Pomógł: 192 Dołączył: 7.03.2005 Skąd: Warszawa Ostrzeżenie: (0%) |
Na górze ma przyklejony temat:
[MYSQL] Polskie znaki
Masz tak jak w tym przykładzie ustanowione połączenie? Sprawdź jeszcze czy kolumna dla tekstu posiada dobre kodowanie i porównywanie napisów. Ten post edytował potreb 21.01.2009, 21:07:47 -------------------- |
|
|
21.01.2009, 21:07:26
Post
#7
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
Ja zawsze w takich przypadkach zalecam sprawdzić, w jakim standardzie trzymane są krzaki w bazie. To że baza jest latin2 nie oznacza, że ja sobie tak nie mogę dodać krzaków zakodowanych w windows, pobierz coś z bazy i użyj jakiejś funkcji z rodzaju:
http://pl.php.net/manual/pl/function.mb-detect-encoding.php Do sprawdzenia, co masz de facto w bazie. Powinny być takie krzaki, jakie masz ustawione w połączeniu, bazie i na stronie, jeśli tak nie jest, to albo sknociłeś kodowanie na stronie, albo w bazie, albo przy połączeniu. Pamiętaj też o tym, że możesz ustawiać kodowanie indywidualnie dla tabeli a nawet pola tabeli - przyjrzyj się temu także. |
|
|
23.01.2009, 16:22:13
Post
#8
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 27.10.2004 Ostrzeżenie: (10%) |
W bazie za pierwszym razem mam normalnie polskie litery "ęóąśłżźćń" na stronie też ok, ale gdy chce edytować tekst w polu edycji są krzaki zamiast pl literek. Gdy zedytuje ten tekst i kliknę ok, krzaki zamiast pl znaków wkradają się do mysql'a już na stałe. Musiałbym co edycja zmieniać ręcznie pl znaki żeby było ok. Wygląda typowo jakby nie pobierał w latin2/iso2 edytor...ale kodowania do niego nie ma osobno. Jest to o tyle dziwne ze pole tytuł mam dobrze i przed i po edycji.
Może to wina ustawienia pola w tabeli...już tracę cierpliwość do tego php. Proszę o pomoc. |
|
|
23.01.2009, 16:24:18
Post
#9
|
|
Grupa: Zarejestrowani Postów: 1 873 Pomógł: 152 Dołączył: 9.04.2006 Skąd: Berlin Ostrzeżenie: (0%) |
header" title="Zobacz w manualu PHP" target="_manual
Wyślij headera z kodowaniem iso-8859-2 -------------------- |
|
|
24.01.2009, 02:11:01
Post
#10
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
Cytat ale gdy chce edytować tekst w polu edycji - to nie możesz tak po prostu zrzucić tego z bazy do formularza a z formularza do bazy.Musisz: 1. Połączyć się z bazą i ustawić odpowiednie kodowanie przy połączeniu 2. Wygenerować stronę z formularzem, do którego wczytujesz krzaki z bazy - strona ma mieć kodowanie takie, jakie masz w bazie - bo skąd inaczej przeglądarka ma wiedzieć, jakie w formularzu sadzisz krzaki? 3. Musisz wysłać zmienione formularzem dane na serwer - strona z formularzem znów musi mieć odpowiednie kodowanie, bo skąd niby serwer ma wiedzieć, jakie sadzisz krzaki? 4. Gdy krzaki odbierasz w PHP znów znaczenie ma kodowanie połączenia z bazą - krzaki odebrane ze strony muszą mieć odpowiednie kodowanie, musisz to w tym samym kodowaniu do bazy dodać i jeszcze sama baza też musi mieć takie kodowanie. Nie wiem w jaki sposób robisz te machinacje - może ściągasz z bazy przez cziwrajtera a próbujesz dodać spambotem. Bez kodu ani nawet linku do strony trudno cokolwiek powiedzieć. |
|
|
26.01.2009, 18:46:49
Post
#11
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 27.10.2004 Ostrzeżenie: (10%) |
Kod http://leap.gowondesigns.com/ Tutaj link do tego CMS'a, przepraszam że nie dałem go odrazu ale myślałem że z Waszymi wskazówkami dam rade sam to zrobić ale niestety nic nie pomaga. Standardowo CMS kodowany jest w UTF8 ale na nim również ten sam problem tylko inne "krzaki" są zamiast polskich znaków. Jeżeli ktoś byłby tak dobry i mógł powiedzieć jak go poprawić żeby w edytorze były normalnie polskie znaki byłbym bardzo zobowiązany. Pozdrawiam i proszę o szybką odp. |
|
|
26.01.2009, 22:20:07
Post
#12
|
|
Grupa: Zarejestrowani Postów: 1 590 Pomógł: 185 Dołączył: 19.04.2006 Skąd: Gdańsk Ostrzeżenie: (0%) |
A na stronie, na której edytujesz krzaki masz poprawnie ustawione kodowanie:
- ? Masz mieć taki charset jak w bazie i przy połączeniu. Wygląda mi to na niedopatrzenie autorów tego systemu (pewnie nie słyszeli nigdy o czymś takim, jak polskie znaki) - ciężko teraz tam dochodzić, co jest skopane, prawdopodobnie kod łączący się z bazą albo edytor, którego tam stosują wymaga jakiś dodatkowych ustawień. Trzeba by rozgryźć system, posiedzieć parę godzin, zrobić testy... Poszukaj kogoś, kto tego u nas używa lub zajrzyj na forum projektu (jeśli mają takowe). Takie niedociągnięcia są paskudne - kilka godzin szukania i sprawdzania, 5 minut poprawiania kodu, potem klient się dziwi, że modyfikacja czegoś wychodzi drożej niż napisanie nowego od podstaw... Obejrzałem nawet na szybkiego kod, spróbuj dodać bezpośrednio po łączeniu się z bazą: - oczywiście zamiast latin2 daj swoje kodowanie. Jak nie pomoże, to użyj funkcji, do których link podałem wyżej, by sprawdzić, w jakim kodowaniu krzaki wychodzą ze strony. |
|
|
29.01.2009, 18:15:09
Post
#13
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 27.10.2004 Ostrzeżenie: (10%) |
Dodawałem i nic...wina na pewno jest edytora(pobieranie rekordów z bazy przez edytor) tylko hmm czy są szanse go poprawić?
Najgorsze jest to że support na oficjalnej stronie jest praktycznie zerowy i raczej tam nie uzyskam odp. na ten problem...a szkoda bo CMS jest naprawdę świetny! Jeżeli ktoś będzie miał pomysł jak to naprawić będę bardziej niż zobowiązany! Pozdrawiam. Edit:
Myślę czy dało by się coś takiego dać? Ten post edytował pistolet 29.01.2009, 18:19:12 |
|
|
29.01.2009, 18:20:14
Post
#14
|
|
Grupa: Zarejestrowani Postów: 123 Pomógł: 2 Dołączył: 13.11.2006 Ostrzeżenie: (0%) |
wszedzie musisz ustawic na utf-8 zarowno w plikach jak i bazie danych.
W bazie danych czasem trzeba ustawic te kodowanie utf-8 recznie dla kazdej tabeli i wiersza. Juz kilka razy sie z tym spotkalem., a jak pobierasz dane z bazy danych to tez poprzedz to set names utf-8 pozdro Ten post edytował piotrekk 29.01.2009, 18:22:09 |
|
|
29.01.2009, 18:36:24
Post
#15
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 27.10.2004 Ostrzeżenie: (10%) |
Aż postanowiłem zrobić screeny tego bo niektórzy dalej nie rozumieją chyba o co mi chodzi...
Kodowanie wszędzie ustawione na UTF-8, a w bazie utf8_polish_ci Po napisaniu tekstu na stronie głównej(wszystko OK): Gdy chce z edytować wyżej wymieniony tekst: I jak w tabela w bazie: Pragnę zauważyć że tytuł jest cały czas wyświetlany dobrze tylko z polem tekst jest problem. Przy zmianie na kodowania na latin2 jest to samo tylko inne krzaki się pokazują. Ten post edytował pistolet 29.01.2009, 18:37:26 |
|
|
29.01.2009, 19:02:56
Post
#16
|
|
Grupa: Zarejestrowani Postów: 296 Pomógł: 32 Dołączył: 3.01.2005 Ostrzeżenie: (0%) |
A czy to jest normalny, zwykły textarea ? bo widze, że w input text jest ok, czy mógłbyś dać tą część kodu z textarea?
-------------------- |
|
|
29.01.2009, 22:34:09
Post
#17
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 27.10.2004 Ostrzeżenie: (10%) |
Nie wiem czy o to chodziło:
|
|
|
29.01.2009, 22:41:11
Post
#18
|
|
Grupa: Zarejestrowani Postów: 296 Pomógł: 32 Dołączył: 3.01.2005 Ostrzeżenie: (0%) |
Jak dla mnie to cały problem jest w tej funkcji:
sprawdź w jakim pliku ona jest, zobacz jakie on ma kodowanie(tzn. zmień kodowanie całego pliku na UTF-8), ewentualnie możliwe, że gdzieś tam będzie jakaś zmienna odpowiadająca za kodowanie. Ogólnie rzecz biorąc z MySQL nie ma na 100% problemu bo kawałek wyżej widać, że wyświetla się poprawnie... spróbuj jeszcze coś takiego: zrób echo dla $body i zobacz co z tego dostajesz... jeżeli dostaniesz normalne znaki to znacyz, ze gdzieś ta funkcja forItem lub ewentualnie pobieranie elementu poprzez ID się wysypuje... pokombinuj, podaj wyniki, jak coś to pisz na pw -------------------- |
|
|
30.01.2009, 00:23:39
Post
#19
|
|
Grupa: Zarejestrowani Postów: 21 Pomógł: 0 Dołączył: 27.10.2004 Ostrzeżenie: (10%) |
Pomału do przodu jak to mówią, odkryłem pośrednio czego to wina...
Cytat formItem(array('type'=>'textarea','name'=>'body','value'=>$body)) zmieniłem na: Cytat formItem(array('type'=>'text','name'=>'body','value'=>$body)) tylko pole tekstu jest "małe" tzn takie jak pole tytuł...ale już są normalnie PL znaki! Teraz pytanko jak przerobić textarea...jakieś pomysły ;> EDIT: Pod textarea jest htmlentities które nie odczytuje pl znaków, jak mogłem to przeoczyć...problem rozwiązany niby takie gówienko a przyprawiło mnie kilka dni w kodzie...Dziękuje Wszystkim za pomoc. Ten post edytował pistolet 30.01.2009, 00:33:54 |
|
|
Wersja Lo-Fi | Aktualny czas: 28.04.2024 - 15:33 |