Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [SQL][PHP]Kodowanie polskich znaków w bazie danych
Demoneos
post
Post #1





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 26.02.2008

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


Sczytuję treść strony www w taki sposób:
  1. $strona = file("adres_strony");

i następnie zapisuje interesujące mnie fragmenty do bazy danych za pomocą SQLa. Wszystko działa prawidłowo oprócz kodowania polskich znaków - tzn. na stronie www są oczywiście polskie znaki ale po skopiowaniu do bazy danych już ich niema. Dodam, że ta strona źródłowa z której sczytuję treść ma kodowanie iso-8859-2.
W phpMyAdmin jest taka opcja "Metoda porównywania napisów" i można przypisać różne wartości poszczególnym polom - próbowałem różnych: UTF-8, ascii-bin, uft8_polish_ci, ale nie pomagało.

Jest jakiś sposób, żeby polskie znaki było odpowiednio kodowane w bazie danych?

Ten post edytował Demoneos 1.05.2010, 11:05:34
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Demoneos
post
Post #2





Grupa: Zarejestrowani
Postów: 149
Pomógł: 0
Dołączył: 26.02.2008

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


Będąc zalogowanym w mysql.exe wpisuję następujące zapytania:
  1. ALTER DATABASE nazwa bazy DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
  2. ALTER TABLE nazwa tabeli DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;



Następnie w skrypcie php wstawiłem takie instrukcje:
  1. $conn = mysql_connect("localhost", "login", "haslo");
  2. mysql_select_db("nazwa bazy", $conn);
  3.  
  4. mysql_query("SET NAMES 'utf8';");
  5. mysql_query('SET CHARACTER SET utf8;');
  6.  
  7. $strona = file("adres_strony"); // strona kodowana jest w iso-8859-2
  8.  
  9. // wyciągam ze zmiennej $strona odpowiedni kod i zapisuję go do różnych zmiennych, np. $imiona
  10.  
  11. $imiona_utf8 = iconv("iso-8859-2","utf-8", $imiona);
  12.  
  13. // wstawiam zmienną $imiona_utf8 do tabeli znajdującej się w odpowiedniej bazie danych


Polskich znaków wciąż nie ma w bazie danych. Czy zrobiłem coś źle?

EDIT:
Właściwie to problem jest już w samym skrypcie php - po użyciu funkcji:
  1. $imiona_utf8 = iconv("iso-8859-2","utf-8", $imiona);

kiedy w następnej linijce skryptu wyświetlam tą zmienną:
echo $imiona_utf8;
to już tutaj nie ma polskich znaków (są krzaczki w ich miejsce).

Jak to możliwe? Przecież funkcja iconv() ma służyć właśnie temu, żeby prawidłowo przekonwertować znaki z jednego kodowania do drugiego.

Ten post edytował Demoneos 1.05.2010, 14:34:44
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 07:16