Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [CodeIgniter] CI + UTF8 + MySQL = niekonczaca sie opowiesc
gh0st
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.07.2011

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


Witam,
Buduje obecnie aplikacje w oparciu o CodeIgnitera i trafilem na sciane, probuje to rozwiazac od dobrych dwoch tygodni i wszystkie moje wysilki spelzly na niczym. Problem jest prosty: na stronie (wynikach wyszukiwania) wysypuje sie kodowanie przy probie wyswietlenia tekstu pobranego z bazy MySQL. Wyswietlane sa krzaki. Probowalem nastepujacych rzeczy:
- dopisanie do widoku <meta http-equiv=“content-type” content=“text/html; charset=utf-8”/>
- podwojne sprawdzenie kodowania w bazie i tabel - wszystko jest na UTF8
- ustawienie zmiennych MySQL (character_set_client, character_set_result etc.) na UTF8
- wywolanie $this->db->query("SET NAMES 'utf8'"); przed kwerenda
- dopisanie do my.cnf
[mysqld]
skip-character-set-client-handshake=1
default-character-set=utf8

- pozamienianie wszystkich funkcji w stylu strlen, strpos, preg_match na mb_*


Teraz najciekawsze:
- wywolanie
daje latin1

- wywolanie
  1. echo mb_detect_encoding()
na stringu z bazy daje UTF8


Uzywam:
CodeIgniter 2.0.2
MySQL 5.0.45
PHP 5.2.6
Apache 2.2.9
NetBeans 6.8

Nie wiem juz czy ja cos zle robie, czy to wina MySQL, czy CI. Na forum CodeIgnitera mi nikt nie pomogl.

Dziekuje z gory za jakakolwiek pomoc.

Ten post edytował gh0st 21.07.2011, 10:09:17
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 8)
thek
post
Post #2





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




W takim wypadku pozostaje:
1) użycie mysql_set_charset dla połaczenia (tak na wszelki wypadek, bo widze w poście, że sie już tym zainteresowaleś)
2) sprawdzenie czy pliki same nie są zapisane w standardzie ANSI zamiast utf-8
O ile to pierwsze jest oczywiste, to drugie często jest niezauważone. Lepiej sprawdź, jakie jest wewnętrzne kodowanie plikow, bo najczęściej twórcy wszelakich frameworków radośnie uważają, że każdy tekst na stronie jest w zakresie kodowym języka angielskiego. A potem tacy polacy czy chińczycy sypią "kobietami lekkich obyczajów" pod niebiosa (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
gh0st
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.07.2011

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


dzieki za odzew.

dopisalem mysql_set_charset i teraz mysql_client_encoding owszem zwraca utf8, ale nie wiem czy dopisywanie czegos w kontrolerze (nawet w konstruktorze) ma wplyw na polaczenie z baza ktore jest tworzone gdzies w konstruktorze obiektu ActiveRecord..
(IMG:style_emoticons/default/sad.gif)

po miesiacu walki z tym jestem ciagle w punkcie wyjscia.

Ten post edytował gh0st 21.07.2011, 11:54:30
Go to the top of the page
+Quote Post
szok
post
Post #4





Grupa: Zarejestrowani
Postów: 165
Pomógł: 20
Dołączył: 2.03.2006

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


Jakie masz kodowanie plików? Dokładnie ich zapisu?

Ja miałem taki przykład wszystko kodowane w UTF, html, baza cała reszta. a były krzaczki okazało się że nie zwróciłem uwagi że kodowanie pliku zapisywane jest jako windows.....cp.. Po zmianie kodowania na UTF-8 problem rozwiązany i teraz się strasznie pilnuje z tym aby kodowanie plików było tylko w UTF.

Ten post edytował szok 22.07.2011, 10:53:35
Go to the top of the page
+Quote Post
gh0st
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 21.07.2011

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


kontroler i widok sa w UTF8.
Go to the top of the page
+Quote Post
thek
post
Post #6





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




A plik, w którym następuje pobranie danych z bazy ma kodowanie w...?
Go to the top of the page
+Quote Post
r3ds0n
post
Post #7





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 26.07.2011

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


mam ten sam problem, gh0st ;/ i dlaczego dopiero sie to okazalo pod koniec projektu? .... Jak coś znajdę na ten temat (w co wątpię) to podeślę rozwiązanie.
Go to the top of the page
+Quote Post
IceManSpy
post
Post #8





Grupa: Zarejestrowani
Postów: 1 006
Pomógł: 111
Dołączył: 23.07.2010
Skąd: Kraków

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


Może spróbujcie otworzyć pliki odpowiedzialne za pobranie danych z bazy i wyświetlenie ich w Notepad++ i zobaczcie w nim w: Format , czy jest ustawione na Koduj w UTF-8 bez BOM. Wtedy będziecie mieć pewność, że zapisany plik jest dobrze zakodowany.

Oprócz tego sprawdźcie, czy w bazie są odpowiednio dane zapisane, w sensie, że nie ma tam krzaczków.
Go to the top of the page
+Quote Post
vvolv
post
Post #9





Grupa: Zarejestrowani
Postów: 15
Pomógł: 5
Dołączył: 31.07.2011

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


gh0st możesz pokazać configa od bazy?
Miałem swego czasu coś podobnego i wystarczyło ustawić:
$db['default']['dbcollat'] = 'utf8_general_ci';


Pozdrawiam
Go to the top of the page
+Quote Post

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: 22.08.2025 - 21:25