Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Znaki zapytania zamiast polskich znaków, Jak naprawić ?
Hexonex
post 27.05.2011, 10:47:45
Post #1





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 12.04.2011

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


Witam. Męczę się z tym problemem od kilku tygodni. Przeszukałem chyba wszystko co można było, ale mam problem z wyświetlaniem polskich liter na mojej stronie.
Zacznę od początku jak to było. Miałem stronę na friko.pl (za.pl), ale aby mieć mniej problemów z działaniem strony, przeniosłem ją na proserwer.pl. Wszystko było pięknie do czasu gdy nie zauważyłem, że zamiast polskich liter (oprócz litery "ó") są znaki zapytania.
Przeniesienie bazy danych przebiegło bez problemowo. W samej bazie mam polskie litery, jedynie na stronie nie.
System porównań dla połączenia MySQL: utf8_polish_ci
Kodowanie napisów dla MySQL: UTF-8 Unicode (utf8)
W tabelach Metoda porównywania napisów: utf8_polish_ci.

Próbowałem wielu rozwiązań, najbardziej znany:
Kod
$db_connect = @mysql_connect($db_host, $db_user, $db_pass);
mysql_query("SET NAMES 'utf8'");


Pozmieniał znaki zapytania na jakieś dziwne znaki, jakby Ał -> ą, itp.
Dodam jeszcze, że bez dodania tego wyżej wymienionego kodu, wszystkie posty napisane już po przeniesieniu miały polskie litery, ale z tym kodem już nie.

Proszę o wszelaką pomoc.
Go to the top of the page
+Quote Post
Fifi209
post 27.05.2011, 11:12:27
Post #2





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

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


Zapoznaj się z podklejonym tematem: Temat: MYSQL Polskie znaki


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
mortus
post 27.05.2011, 11:14:40
Post #3





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Sprawdź kodowanie strony w sekcji HEAD (źródło strony w przeglądarce). Sprawdź również kodowanie samego pliku np. index.php (pobierz przez klienta FTP i otwórz w np. Notepad++, czy PSPad - odpowiednie informacje będą wyświetlone na pasku statusu). Sprawdź jeszcze raz, czy aby na pewno Twoja obecna baza danych jest kodowana w utf-8. W phpMyAdminie lub jakimś zewnętrznym kliencie np. Navicat Lite wpisz
  1. SHOW CREATE DATABASE `nazwa_bazy`
lub
  1. SHOW CREATE TABLE `nazwa_wybranej_tabeli`
Cytat(Hexonex)
Dodam jeszcze, że bez dodania tego wyżej wymienionego kodu, wszystkie posty napisane już po przeniesieniu miały polskie litery, ale z tym kodem już nie.
Czy aby na pewno na poprzednim serwerze baza danych była kodowana w utf-8? Jeśli masz jeszcze pliki z eksportu bazy danych to sprawdź ich zawartość.
Go to the top of the page
+Quote Post
Hexonex
post 28.05.2011, 01:42:12
Post #4





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 12.04.2011

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


mortus, w phpmyadmin, wpisałem
  1. SHOW CREATE TABLE `nazwa_wybranej_tabeli`

(nazwa tabeli to: ep_posts)
i wyskoczyło mi takie coś:
  1. CREATE TABLE `ep_posts` (
  2. `forum_id` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  3. `thread_id` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  4. `post_id` smallint(5) UNSIGNED NOT NULL AUTO_INCREMENT,
  5. `post_subject` varchar(100) collate utf8_polish_ci NOT NULL DEFAULT '',
  6. `post_message` text collate utf8_polish_ci NOT NULL,
  7. `post_showsig` tinyint(1) UNSIGNED NOT NULL DEFAULT '0',
  8. `post_smileys` tinyint(1) UNSIGNED NOT NULL DEFAULT '1',
  9. `post_author` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  10. `post_datestamp` int(10) UNSIGNED NOT NULL DEFAULT '0',
  11. `post_ip` varchar(20) collate utf8_polish_ci NOT NULL DEFAULT '0.0.0.0',
  12. `post_edituser` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  13. `post_edittime` int(10) UNSIGNED NOT NULL DEFAULT '0',
  14. PRIMARY KEY (`post_id`),
  15. KEY `thread_id` (`thread_id`)
  16. ) ENGINE=MyISAM AUTO_INCREMENT=3174 DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci


Sprawdziłem również kodowanie pliku subheader.php (extreme fusion) w Adobe dreamweaver i ma on kodowanie Unicode UTF-8.

Co do tego czy aby na pewno baza jest kodowana w utf-8, umieszczam screena jako dowód, że tak.


Go to the top of the page
+Quote Post
Rid
post 28.05.2011, 01:51:56
Post #5





Grupa: Zarejestrowani
Postów: 715
Pomógł: 47
Dołączył: 5.12.2010

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


A pododawane są metatagi z kodowaniem na stronach??
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >

Dwa różne serwery i dwie różne konfiguracje.To może być źródłem Pana problemu.
A próbował Pan zainstalować serwer u siebie i puścić czy efekt będzie jednakowy?questionmark.gif

Ten post edytował Rid 28.05.2011, 02:01:46
Go to the top of the page
+Quote Post
Hexonex
post 29.05.2011, 03:42:43
Post #6





Grupa: Zarejestrowani
Postów: 28
Pomógł: 0
Dołączył: 12.04.2011

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


  1. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" >
, oczywiście że jest.

Co do instalacji serwera - nie wiem jak tego dokonać.

@Edit

Ok. Problem rozwiązany. Pewna osoba podsunęła mi małą podpowiedź i dodałem do pliku subheader.php coś takiego:
  1. mysql_query("SET NAMES 'latin2'");


Niby prosta rzecz. Zawsze wstawiałem UTF, ale nigdy nie pomyślałem o latinie haha.gif

To tyle, temat można zamknąć.
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 Wersja Lo-Fi Aktualny czas: 26.04.2025 - 04:04