Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Złe kodowanie po stronie serwera?
Largo
post
Post #1





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


Witam,

Używam skryptu IP.Board ( proszę nie przenosić, nie dotyczy skryptu! ) i dziś przemyśliwałem, czy mam poprawne kodowanie w bazie danych. Okazało się to, czego się obawiałem - nie poprawne. Ustawiłem kodowanie w skrypcie utf-8 i działa, ale do bazy zapisuję dane w formacie:

Cytat
Jeśli chcesz dowiedzieć się ile twój przedmiot jest wart napisz :-) <br />W temacie musisz podać :ld/nldDokładne statystyki przedmiotu


Poprawne powinno wyglądać tak i ono działa:

http://wklej.com.pl/show.php?what=20090603170717

Dlaczego serwer tak zapisuje dane? Oto dane o MySQL:

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

Tabele mają również ten sam system. W czym jest rzecz?

Pozdrawiam,
Largo

Ten post edytował Largo 3.06.2009, 16:07:10
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 12)
Prym
post
Post #2





Grupa: Zarejestrowani
Postów: 100
Pomógł: 11
Dołączył: 20.05.2007
Skąd: z fotela :)

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


z tymi skryptami zwłaszcza w starszej wersji bywa że nie mają zadeklarowanego kodowania po połączeniu z bazą danych. więc znajdź miejsce gdzie się podpina pod bazę i zobacz czy jest zaraz po podłączeniu bazy wykonane zapytanie:

Kod
SET NAMES UTF8


jak nie ma to koniecznie dodaj. Powinno pomóc
Go to the top of the page
+Quote Post
Largo
post
Post #3





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


Witam,

Teraz to ja już czegoś nie rozumiem. Możesz mi zapodać listę znaków UTF-8 jak powinny wyglądać w bazie danych? Zmieniłem teraz kodowanie na iso-8859-2 i mam znaki w bazie polskie tak jak się je piszę i widzi...

PS. Dziwne, seria polskich znaków:

ąęćóżdfgfg

Zostaje zapisana tak:

ąęćóżdfgfg

I programy rozumieją to, czy to jest poprawne kodowanie utf8_general_ci? Czy powinno ono wyglądać inaczej?

Ten post edytował Largo 4.06.2009, 12:10:52
Go to the top of the page
+Quote Post
jezoo
post
Post #4





Grupa: Zarejestrowani
Postów: 92
Pomógł: 3
Dołączył: 4.04.2006

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


sprawdz w ten sposob, na samym poczatku skryptu ktory wyswietla dane z bazy napisz cos takiego:
  1. <?php
  2. header('Content-Type: text/html; charset=ISO-8859-2');
  3. ?>
Go to the top of the page
+Quote Post
Largo
post
Post #5





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


Witam,

Wynik:

Masz sugesti�, nowy pomys�, ciekaw� ide� na zmiany? Napisz tutaj! Z ch�ci� Ci� wys�uchamy i moşliwe, şe dzi�ki Tobie dokonamy zmian na lepsze.
Go to the top of the page
+Quote Post
jezoo
post
Post #6





Grupa: Zarejestrowani
Postów: 92
Pomógł: 3
Dołączył: 4.04.2006

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


nie doczytalem do konca, mea culpa smile.gif
Cytat
System kodowania znaków dla MySQL: UTF-8 Unicode (utf8)
System porównań dla połączenia MySQL: utf8_general_ci


czyli w Twoim przypadku to UTF-8 zamiast ISO-8859-2

------[EDIT]
btw, zastosoj preg_replace zeby zastapic polskie znaki kodowaniem ASCI lub UTF, np:
  1. <?php
  2. $str = preg_replace("#ą(.*?)s#si", "ą", $str);
  3. ?>


wiecej o bbcode w tym temacie

Ten post edytował jezoo 4.06.2009, 12:42:32
Go to the top of the page
+Quote Post
Largo
post
Post #7





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


Witaj,

Dziękuje za radę, ale tu nie chodzi o przenoszenie bazy, a tworzenie takich wpisów teraz... Nie chcę obudzić potem z tym problemem, a wolę go teraz rozwiązać.
Go to the top of the page
+Quote Post
Kaayl
post
Post #8





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 22.03.2007

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


W przy kodowaniu strony wazne sa conajmniej 3 ustawienia.

1. Przegladarki (definiujesz w <head> w html'u):
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

2. Bazy:
Ustawienia kodowania bazy jak rowniez tabel. Sprawdz np. w phpmyadminie czy wszedzie masz UTF-8

3. Przy zestawianiu polaczenia w php:
np. mysql_query("SET NAMES 'utf-8'"); //kodowanie polaczenia
Go to the top of the page
+Quote Post
Largo
post
Post #9





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


Witam,

Wszystkie 3 ustawione poprawione... Czy powodem może być zmienna systemowa: character_set_server = latin1 i collation_server = latin1_swedish_ci?
Go to the top of the page
+Quote Post
Kaayl
post
Post #10





Grupa: Zarejestrowani
Postów: 17
Pomógł: 0
Dołączył: 22.03.2007

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


Powinienes miec mniej wiecej cos takiego w my.cnf:

Kod
[client]
         default-character-set=utf8
         [mysql]
         default-character-set=utf8
         character-sets-dir=/usr/share/mysql/charsets
         [mysqlcheck]
         default-character-set=utf8
         character-sets-dir=/usr/share/mysql/charsets
         [mysqldump]
         default-character-set=utf8
         character-sets-dir=/usr/share/mysql/charsets
        
        
         [mysqld]
         default-character-set=utf8
         default-collation=utf8_general_ci
        
         character-set-server=utf8
         collation-server=utf8_general_ci
         init-connect='SET NAMES utf8'


Sprawdz czy masz tak serwer ustawiony. Daj znac jezeli masz tak samo i dalej nie dziala. Bedziemy dalej szukac.
Go to the top of the page
+Quote Post
Largo
post
Post #11





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


Witaj,

Napisałem pytanie do administratora. Mimo to, mam pytanie. Dlaczego Wordpress dodaje do bazy polskie znaki tak jak się je piszę, a nie zamienia na encje? Czy tak powinna wyglądać bazą UTF-8, czyli znaki w swojej normalnej postaci?
Go to the top of the page
+Quote Post
Prym
post
Post #12





Grupa: Zarejestrowani
Postów: 100
Pomógł: 11
Dołączył: 20.05.2007
Skąd: z fotela :)

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


dokladnie. Kodowanie UTF-8 ma "w sobie" wszystkie znaki specjalne poszczególnych języków. kwestia błędnego zapisu w bazie może również dotyczyć samej bazy (została utworzona jako iso) jak Kaayl napisał kodowanie musisz mieć bazy oraz poszczególnych pól tekstowych w tabelach ustawione na UTF

miałem kiedyś robótkę po kimś na bazie którą tamten ktoś przerabiał z iso na uTF i problemem była jedna kolumna - cała baza ustawiona na UTF tabele też a jedna kolumna TEXT miała ISO zamiast UTF. Co smieszne obok kolumna tytułu varchar miała UTF smile.gif
więc moja rada posprawdzaj dokładnie w myadminie każdą tabele i kolumny. acha przerabianie samego kodowania kolumny może spowodować że wszystkie dane w kolumnie dostaną krzaczków. najlepiej wyeksportuj bazę z dropem tabel i w eksporcie pozmieniaj wszelkie iso na utf8
Go to the top of the page
+Quote Post
Largo
post
Post #13





Grupa: Zarejestrowani
Postów: 203
Pomógł: 6
Dołączył: 11.09.2005

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


Witaj,

Patrzyłem na wszystko i wszędzie jest utf8_general_ci, nie mam pojęcia jak mam zweryfikować takie dane... O dziwo na tym serwerze Wordpress dobrze zapisuje dane, bo są wszystkie znaki polskie i działa, a sam IP.Board daje mi tak po kościach, że nie wiem :-)
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 - 15:44