[MySQL] - znaki...

Dział poświęcony programowaniu w każdym języku.

[MySQL] - znaki...

Postprzez Júzek » 2008-07-02, 13:20:41

Wiem, wiem... Na pierwszy rzut oka to najczęściej powtarzalny temat na forach... tylko, że w tym przypadku jestem "po" zastosowaniu się do najczęstszych rad a mimo to problem nie znika.

Pliki *.php - UTF-8
Baza \ tabele: utf8_polish_ci
<meta .... : "text/html; charset=utf-8" ... meta>
Wynik: �???????? dla wartośći: "óęąśłżźćń"
Avatar użytkownika
JúzekNone specified
BOSSu
BOSSu
 
Posty: 830
Dołączył(a): 2006-06-23, 15:08:15
Lokalizacja: ols.vectranet.pl
Podziękował : 0 razy
Otrzymał podziękowań: 0 razy

Re: [MySQL] - znaki...

Postprzez BlueMan » 2008-07-02, 13:25:35

Júzek napisał(a):utf8_polish_ci
zmień na general_ci, albo _bin
nie używa się nigdzie _polish_ci

Júzek napisał(a):Wynik: �???????? dla wartośći: "óęąśłżźćń"
wynik widzialny przez phpmyadmin, czy na stronie?
Czytaj regulamin - unikniesz wielu problemów.
Korzystajcie z załączników na forum aby pliki nie ginęły w przyszłości w zewnętrznych serwisach!

Obrazek
Avatar użytkownika
BlueManMale
Administrator
Administrator
 
Posty: 19092
Dołączył(a): 2004-05-26, 17:34:59
Lokalizacja: Dabrowa Górn.
Podziękował : 6 razy
Otrzymał podziękowań: 5 razy
Imię: Szymon

Re: [MySQL] - znaki...

Postprzez Júzek » 2008-07-02, 14:34:20

Zmieniłem na "utf8_general_ci", phpMyAdmin wyświetla je normalnie, oryginalne skrypty WP również. Niestety zwykłe wypisanie wyświetla "krzaki" :/

Nie widać różnicy czy string został dodany przez panel WP czy w PMA.

Poszperam w funkcjach wp może dołączyli coś do obsługi znaków.
Avatar użytkownika
JúzekNone specified
BOSSu
BOSSu
 
Posty: 830
Dołączył(a): 2006-06-23, 15:08:15
Lokalizacja: ols.vectranet.pl
Podziękował : 0 razy
Otrzymał podziękowań: 0 razy

Re: [MySQL] - znaki...

Postprzez Júzek » 2008-07-02, 18:10:19

Mały UPDATE:

By wykluczyć winę ze strony skryptów WP utworzyłem nową bazę, nową tabele, pola wypełniłem "óąśżźćńł". Po wypisaniu ten sam efekt. Wszystko kodowane UTF8_Unicode_ci (próbowałem również z UTF8_general_ci), pliki UTF8... mety tak samo... no i "???????"...

Przyznam, że to mnie przerasta :/
Avatar użytkownika
JúzekNone specified
BOSSu
BOSSu
 
Posty: 830
Dołączył(a): 2006-06-23, 15:08:15
Lokalizacja: ols.vectranet.pl
Podziękował : 0 razy
Otrzymał podziękowań: 0 razy

Re: [MySQL] - znaki...

Postprzez junior » 2008-07-02, 19:04:48

a co masz w ustawieniach mysql składowania oraz klienta jakie kodowanie?
zawsze możesz się nie zgodzić z opinią autora tego postu.
Avatar użytkownika
juniorMale
V.I.P.
V.I.P.
 
Posty: 1446
Dołączył(a): 2008-06-22, 11:07:52
Lokalizacja: Łódź
Podziękował : 0 razy
Otrzymał podziękowań: 4 razy

Re: [MySQL] - znaki...

Postprzez BlueMan » 2008-07-02, 21:35:26

1. W jaki sposób zapisujesz dane do bazy danych?
2. Po tym zapisie jakie znaki widzisz w bazie danych? (jakieś specyficzne krzaki, znaki zapytania, czy PL czcionkę?)
3. Na stronach wszędzie masz UTF??
Czytaj regulamin - unikniesz wielu problemów.
Korzystajcie z załączników na forum aby pliki nie ginęły w przyszłości w zewnętrznych serwisach!

Obrazek
Avatar użytkownika
BlueManMale
Administrator
Administrator
 
Posty: 19092
Dołączył(a): 2004-05-26, 17:34:59
Lokalizacja: Dabrowa Górn.
Podziękował : 6 razy
Otrzymał podziękowań: 5 razy
Imię: Szymon

Re: [MySQL] - znaki...

Postprzez Júzek » 2008-07-02, 21:49:51

a co masz w (...) jakie kodowanie?

(Główne ustawienia)
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
System porównań dla połączenia MySQL: utf8_unicode_ci

(Podczas tworzenia bazy)
Metoda porównywania napisów dla tabeli: utf8_unicode_ci
Metoda porównywania napisów dla tabeli i pola: utf8_unicode_ci

1. W jaki sposób zapisujesz dane do bazy danych?

Wpisywane przez: PMA, PA WP
Efekt: Strony WP wyświetlają prawidłowo, oddzielne skrypty nie.

2. Po tym zapisie jakie znaki widzisz w bazie danych?

PMA i WP zawsze wyświetla prawidłowo.

3. Na stronach wszędzie masz UTF??

Tak, zarówno kodowanie plików *.php jak i informacje <meta...> w części z html.
Avatar użytkownika
JúzekNone specified
BOSSu
BOSSu
 
Posty: 830
Dołączył(a): 2006-06-23, 15:08:15
Lokalizacja: ols.vectranet.pl
Podziękował : 0 razy
Otrzymał podziękowań: 0 razy

Re: [MySQL] - znaki...

Postprzez BlueMan » 2008-07-02, 22:09:04

Kod: Zaznacz cały
SET NAMES latin2;
SET NAMES latin1
SET NAMES utf8;

jedno z tych zapytań spróbuj tuż po połączeniu się z bazą danych.

czyli jak masz:
Kod: Zaznacz cały
mysql_connect();
mysql_query("SET NAMES latin2");
Czytaj regulamin - unikniesz wielu problemów.
Korzystajcie z załączników na forum aby pliki nie ginęły w przyszłości w zewnętrznych serwisach!

Obrazek
Avatar użytkownika
BlueManMale
Administrator
Administrator
 
Posty: 19092
Dołączył(a): 2004-05-26, 17:34:59
Lokalizacja: Dabrowa Górn.
Podziękował : 6 razy
Otrzymał podziękowań: 5 razy
Imię: Szymon

Re: [MySQL] - znaki...

Postprzez Júzek » 2008-07-02, 22:29:43

SET NAMES utf8;

Zadziałało, dzięki wielkie :)

Pomógł +1 :]
Avatar użytkownika
JúzekNone specified
BOSSu
BOSSu
 
Posty: 830
Dołączył(a): 2006-06-23, 15:08:15
Lokalizacja: ols.vectranet.pl
Podziękował : 0 razy
Otrzymał podziękowań: 0 razy

Re: [MySQL] - znaki...

Postprzez BlueMan » 2008-07-02, 22:33:59

Spoko - ze znakami w bazie danych zawsze były problemy :(
Czytaj regulamin - unikniesz wielu problemów.
Korzystajcie z załączników na forum aby pliki nie ginęły w przyszłości w zewnętrznych serwisach!

Obrazek
Avatar użytkownika
BlueManMale
Administrator
Administrator
 
Posty: 19092
Dołączył(a): 2004-05-26, 17:34:59
Lokalizacja: Dabrowa Górn.
Podziękował : 6 razy
Otrzymał podziękowań: 5 razy
Imię: Szymon

Re: [MySQL] - znaki...

Postprzez Júzek » 2008-07-02, 22:37:33

Ktoś z ekipy wzbogacającej język PHP lub ekipy od MySQL mógłby napisać jakiś "bajer" który wykrywa takie sytuacje i sam w sobie z automatu ten problem rozwiązuje :] Szkoda, że to nie jest takie łatwe jak mi się wydaje :/

No nic... :]
Avatar użytkownika
JúzekNone specified
BOSSu
BOSSu
 
Posty: 830
Dołączył(a): 2006-06-23, 15:08:15
Lokalizacja: ols.vectranet.pl
Podziękował : 0 razy
Otrzymał podziękowań: 0 razy

Re: [MySQL] - znaki...

Postprzez Júzek » 2008-07-14, 15:49:48

Witam.
Znowu problem ze znakami. Tym razem nie dotyczącymi bazy a samego skryptu, mianowicie:

Kod: Zaznacz cały
function urlArgs($surl, $url)
{
    $url = substr($url, strlen($surl));
    $b = 0;
    for($a = 0;$a < strlen($url);$a++) {
        if ($url[$a] == "/") {
            $b = $b + 1;
            $url[$a] = "";
        }
        $urlArgs[$b] .= $url[$a];
    }

    return $urlArgs;
}


Zwraca "krzaczek" zamiast braku znaku w miejscu /. Natomiast w tym przypadku każdy znak to "krzaczek".
Kod: Zaznacz cały
function urlArgs($surl, $url)
{
    $url = substr($url, strlen($surl));
    $b = 0;
    for($a = 0;$a < strlen($url);$a++) {
        if ($url[$a] == "/") {
            $b = $b + 1;
        }
        $url[$a] = substr($url[$a], 1);
        $urlArgs[$b] .= $url[$a];
    }

    return $urlArgs;
}


Na apache 1.x nie miałem takich problemów dopiero po aktualizacji do 2.x.

Wydawało mi się ze te funkcje (już nie wspominając o zwykłym przypisaniu) zwracają znaki w stronie kodowej, w której zostały poprzednio przekazane.
Avatar użytkownika
JúzekNone specified
BOSSu
BOSSu
 
Posty: 830
Dołączył(a): 2006-06-23, 15:08:15
Lokalizacja: ols.vectranet.pl
Podziękował : 0 razy
Otrzymał podziękowań: 0 razy

Re: [MySQL] - znaki...

Postprzez Júzek » 2008-11-19, 19:07:13

Witam.
Problem też dotyczy znaków dlatego nie tworze nowego tematu.

.html: utf-8, meta: utf-8; .php: utf-8; echo $_POST['post'] -> krzaki ...

utf8_encode / utf8_decode w róznych kombinacjach nie pomaga.
Avatar użytkownika
JúzekNone specified
BOSSu
BOSSu
 
Posty: 830
Dołączył(a): 2006-06-23, 15:08:15
Lokalizacja: ols.vectranet.pl
Podziękował : 0 razy
Otrzymał podziękowań: 0 razy

Re: [MySQL] - znaki...

Postprzez BlueMan » 2008-11-19, 19:19:38

Chyba, że sprawa ustawień serwera... ale ogólnie dziwne to :|
Czytaj regulamin - unikniesz wielu problemów.
Korzystajcie z załączników na forum aby pliki nie ginęły w przyszłości w zewnętrznych serwisach!

Obrazek
Avatar użytkownika
BlueManMale
Administrator
Administrator
 
Posty: 19092
Dołączył(a): 2004-05-26, 17:34:59
Lokalizacja: Dabrowa Górn.
Podziękował : 6 razy
Otrzymał podziękowań: 5 razy
Imię: Szymon

Re: [MySQL] - znaki...

Postprzez junior » 2008-11-19, 19:36:49

jeśli masz niepoprawnie ustawione kodowanie w pliku wyświetlającym lub wysyłającym to apache może wysłać dokument ze swoim domyślnym kodowaniem.
w ostateczności na początku pliku :
Kod: Zaznacz cały
header("Content-Type: text/html; charset=UTF-8");
zawsze możesz się nie zgodzić z opinią autora tego postu.
Avatar użytkownika
juniorMale
V.I.P.
V.I.P.
 
Posty: 1446
Dołączył(a): 2008-06-22, 11:07:52
Lokalizacja: Łódź
Podziękował : 0 razy
Otrzymał podziękowań: 4 razy

Re: [MySQL] - znaki...

Postprzez BlueMan » 2008-11-19, 19:38:25

Oczywiście to co napisał junior w PHP ma być.
Czytaj regulamin - unikniesz wielu problemów.
Korzystajcie z załączników na forum aby pliki nie ginęły w przyszłości w zewnętrznych serwisach!

Obrazek
Avatar użytkownika
BlueManMale
Administrator
Administrator
 
Posty: 19092
Dołączył(a): 2004-05-26, 17:34:59
Lokalizacja: Dabrowa Górn.
Podziękował : 6 razy
Otrzymał podziękowań: 5 razy
Imię: Szymon

Re: [MySQL] - znaki...

Postprzez Júzek » 2008-11-19, 19:43:48

... jest i niestety nie rzutuje na wyświetleniu $_POST'(u\a). Dobrałem się do funkcji zwracającej kodowanie stringu; o efektach poinformuje :]


EDIT:
Można uznać, że problem rozwiązany. Przywróciłem plik z backup'a i z czystej ciekawości sprawdziłem, która funkcja mogłaby takie krzaki wyhodować. Okazuje się ze htmlentities() jest za to odpowiedzialna.


Ehhhh... no nic...

Pozdrawiam :]
Avatar użytkownika
JúzekNone specified
BOSSu
BOSSu
 
Posty: 830
Dołączył(a): 2006-06-23, 15:08:15
Lokalizacja: ols.vectranet.pl
Podziękował : 0 razy
Otrzymał podziękowań: 0 razy


  • Inne

Powrót do Programowanie

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 4 gości

cron