Skocz do zawartości

Problem z kodowaniem polskich znaków z bazy danych.


S4

Rekomendowane odpowiedzi

Niedawno zakupiłem skrypt na którym chce uruchomic mały serwis jednak mam problem (nie pierwszy z tym skryptem, ale juz reszte jakoś rozwiązałem), od 2 dni mecze się aby były wyświetlane polskie litery z bazy danych i nie potrafie sobie z tym poradzić ;) czy ktoś z bardziej doświadczonych użytkowników może mi pomóc ?

Moge dać dostęp do konta gdyż serwis jest w trakcie budowy na testowym koncie na linuxpl.com

Właściwie to nie trzeba zmieniać aby stare wpisy z bazy się wyświetlały bo i tak idą do wykasowania ale, żeby nowe jakie dodaję poprawnie się wyświetalły bo niestety mam ten probłem przy dodawaniu nowych wiadomości (poprawnie wyświetla się tylko Ó)

Jeżel ktoś może pomoć prosze o kontakt na GG lub PM.

Odnośnik do komentarza
Udostępnij na innych stronach

Masz problem z kodowaniem znaków najprawdopodobnie wpisujesz w WIN1250 a Wyświetlasz jako ISO-8859-2.

Do rozwiązania problemu potrzebujesz zrozumiec co to jest kodowanie.

Czym sie rózni kodowanie bazy danych od kodowania skryptu z której ją importujesz.

Jak sie ma kodowanie bazy danych do kodowania strony www.

Najprosciej to zrób tak:

1)Sprawdz jakie kodowanie ma BAZA

2)Sprawdz jakie kodowanie ma plik SQL z którego importujesz

jezli sa roznie kodowania to musisz albo zmienic kodowanie SQL-a np. za pomocą ICONV

albo podczas importu bazy ustaw kodowanie ;)

Zaczep mnie na gg po 17:15 to pomogę

Odnośnik do komentarza
Udostępnij na innych stronach

Masz problem z kodowaniem znaków najprawdopodobnie wpisujesz w WIN1250 a Wyświetlasz jako ISO-8859-2.

Do rozwiązania problemu potrzebujesz zrozumiec co to jest kodowanie.

Czym sie rózni kodowanie bazy danych od kodowania skryptu z której ją importujesz.

Jak sie ma kodowanie bazy danych do kodowania strony www.

Najprosciej to zrób tak:

1)Sprawdz jakie kodowanie ma BAZA

2)Sprawdz jakie kodowanie ma plik SQL z którego importujesz

jezli sa roznie kodowania to musisz albo zmienic kodowanie SQL-a np. za pomocą ICONV

albo podczas importu bazy ustaw kodowanie :rolleyes:

Zaczep mnie na gg po 17:15 to pomogę

Zaczepie ;)

https://blog.mwojcik.pl/2006/10/08/polskie-znaki-w-mysql/ - przeczytaj, moze cos wykombinujesz...

Czytałem ale nic nie wykombinowałem ;)

nie znam sie za bardzo na tym i to pewnie główny problem

Odnośnik do komentarza
Udostępnij na innych stronach

Linuxpl.com ma jakis dziwne ustawienia, to jedyny hosting z ktorym nie udało mi się eksportować bazy w takim sposobie, że importowało się gdziesz indziej bez krzaków - sprobowałem 3 różny hostingi, rózne kodowanie, różne eksporty i po 4 dniach zrezygnowałem (2 razy spędzilem po 2 dni w ciągu poł roku - ale nawet ta przerwa nie pomogła ;))

PS: Jesli ktoś ma patent na ten problem, to jestem zainteresowane :rolleyes:

Odnośnik do komentarza
Udostępnij na innych stronach

Podaje co zaobserwowałem :)

Na poczatek poszedł prosty skrypt który wyciaga dane z tabeli gdzie sa polskie znaki aby zobaczyć czy rzeczywiscie polskie znaki sie nie wyświetlają. Wpisałem do bazy z palca polskie znaki i napisałem prosty PHP który wyciaga moj wiersz z PL-literkami

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title> MojaStrona.PL</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
</head>

<body>
<p>

<?php
 $X=mysql_connect(......) or die(mysql_error());
 print ('Polaczenie nawiązane');

 mysql_select_db("......", $X );
 print ('Wybralem baze ...... ');


 $result = mysql_query("SELECT Jakis wiersz z Poskimi znakami WHERE id = 52  ", $X);
 $row = mysql_fetch_row($result);
 echo " Pierwsza dana : ", $row[0], "<br>\n";
 echo " Druga dana	 : ", $row[1], "<br>\n";
?>
</body>
</html>

Oczywiscie nie działałały polskie znaki i wyświetlały sie jako ?????????????

Dodałem instrukcje

mysql_query('SET NAMES "UTF8"', $X);
mysql_query("SET collation_connection='utf8_general_ci'", $X);
mysql_query("SET character_set_client='latin2'", $X);
mysql_query("SET character_set_connection='latin2'", $X);
mysql_query("SET character_set_results='latin2'", $X);
mysql_query("SET character_set_server='latin2'", $X);

I już było OK

W sumie nie miałem dostepu do konta aby potestować dokładnie co jest zle w kazdym bac razie na skrypcie testowym zaczeło działac OK dla kodowania 8859-2,

Przyczyna moim zdaniem lezy w błedach w php.ini Gdzieś ktoś tam wpisał ISO-8859-1 o jeden raz za dużo :)

Odnośnik do komentarza
Udostępnij na innych stronach

Mając wyeksportowany plik .sql przyważnie robie tak:

1. Instaluje program Gżegżółka XP.

2. Ładuje plik .sql do programu i zmieniam kodowanie na ISO 8859-2.

3. Podczas importu do bazy, w bazie MySQL opcję Character set of the file ustawiam na Latin1.

Teraz gdy pobieram z bazy dane z polskimi znakami wszystko gra, a wyszukiwarka nie ma żadnych problemów z naszym polskim językiem.

Zaznacze że w bazie MySQL connection collation mam ustawione na utf8_polish_ci, a kodowanie kolumny z polskim tekstem na latin1_swedish_ci.

W moim przypadku wszystko gra :)

Odnośnik do komentarza
Udostępnij na innych stronach

Maximus-Rex wielkie dzięki za pomoc :)

Problem rozwiązałem zmieniając hosting na NAZWA.PL narazie wszystko działa jak powinno.

1. plik na serwer

2. wgranie bazy

3. edycja pliku konfigruacyjnego

WSZYSTKO DZIAŁA i to z polskimi literami :D

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności