Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP] Problem z kodoawniem
--TomASS--
post
Post #1





Goście







Cześć,

Łaczę się z bazą danych przy pomocy mysqli, na początku (przed zapytaniem) wywołuję:
Kod
mysqli::set_charset("utf8");


i wszystko było ok, do czasu przeniesienia danych na inny serwer.

Te dane co były wprowadzone wcześniej, mają poprawnie zapisane polskie znaki. Wprowadzają nowe dane mam zamiast poliskich znaków, tylko znaki zapytania :/
Co dziwne, jak skasuję set_charset (get_charset pokazuje latin1) jest poprawnie wprowadzane, ale za to "stare" dane są ze znakami zapytania sad.gif

Co się mogło stać podczas przenoszenia lub co zmienić w bazie danych aby to naprawić (podejrzewam, ustawienie w bazie danych)?
Go to the top of the page
+Quote Post
Turson
post
Post #2





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Wejdź w bazę danych i sprawdź kodowanie
Go to the top of the page
+Quote Post
TomASS
post
Post #3





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Cytat
DEFAULT_CHARACTER_SET_NAME
latin1


Czy mogę to zmienić (bez naruszania danych)?


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #4





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


  1. ALTER DATABASE `nazwa_bazy`
  2. DEFAULT CHARACTER SET utf8
  3. COLLATE utf8_unicode_ci

lub jak dla samej tabeli
  1. ALTER TABLE `nazwa_tabeli`
  2. DEFAULT CHARACTER SET utf8
  3. COLLATE utf8_unicode_ci


--------------------
Go to the top of the page
+Quote Post
TomASS
post
Post #5





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Niestety

  1. ALTER DATABASE `nazwa_bazy`
  2. DEFAULT CHARACTER SET utf8
  3. COLLATE utf8_unicode_ci


nic nie dało sad.gif


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #6





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(TomASS @ 28.04.2014, 23:56:57 ) *
Niestety

  1. ALTER DATABASE `nazwa_bazy`
  2. DEFAULT CHARACTER SET utf8
  3. COLLATE utf8_unicode_ci


nic nie dało sad.gif


zgaduje że testowałeś tylko obecne dane? - bo tylko do każdego nowego już powinno działać; a jak "przekonwertowac" to nwm.

może to coś pomoże.


--------------------
Go to the top of the page
+Quote Post
TomASS
post
Post #7





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Cytat(ZaXaZ @ 29.04.2014, 00:10:13 ) *
zgaduje że testowałeś tylko obecne dane? - bo tylko do każdego nowego już powinno działać; a jak "przekonwertowac" to nwm.

Pudło sad.gif
Dla nowych nie działa (dodawanie) a dla strarych jest ok (nic się nie zminiło)

Cytat(ZaXaZ @ 29.04.2014, 00:10:13 ) *
może to coś pomoże.

Wywołując
  1. SHOW VARIABLES LIKE 'char%'

Dostaję:
Kod
character_set_client     utf8
character_set_connection     utf8
character_set_database     utf8
character_set_filesystem     binary
character_set_results     utf8
character_set_server     utf8
character_set_system     utf8
character_sets_dir     /usr/share/mysql/charsets/



--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #8





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


to może lepiej, pokaż kod jakim dodajesz, bo pewnie w im problem; lub w hostingu jeśli zmieniłeś, ale lepiej pokaż się upewni ;p


--------------------
Go to the top of the page
+Quote Post
TomASS
post
Post #9





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Mam klasę, która dziedziczy po mysqli a w niej:

  1. parent::set_charset("utf8");
  2. $query = $this->query($this->currentQuery);


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #10





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(TomASS @ 29.04.2014, 00:25:48 ) *
Mam klasę, która dziedziczy po mysqli a w niej:

  1. parent::set_charset("utf8");
  2. $query = $this->query($this->currentQuery);


A jakie zapytanie sql? zrób może pod tym $query ... var_dump($this->currentQuery); i pokaż co zwraca + jakie masz zapytanie


--------------------
Go to the top of the page
+Quote Post
TomASS
post
Post #11





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Zrobiłem:

  1. echo $db->currentQuery;
  2. echo $db->character_set_name();

i dostałem:
Kod
CALL dodaj('00001122446',60270333,'ŁĄĆ','ŹĆŃ','INFO','ÓŚĘ',b'1',@retValue);utf8


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #12





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(TomASS @ 29.04.2014, 00:37:57 ) *
Zrobiłem:

  1. echo $db->currentQuery;
  2. echo $db->character_set_name();

i dostałem:
Kod
CALL dodaj('00001122446',60270333,'ŁĄĆ','ŹĆŃ','INFO','ÓŚĘ',b'1',@retValue);utf8


jak wszystko działa to prawdo podobnie plik zmienił kodowanie, upewnij się czy masz utf-8 pliku (bez bom...)


--------------------
Go to the top of the page
+Quote Post
TomASS
post
Post #13





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Cytat(ZaXaZ @ 29.04.2014, 00:46:24 ) *
jak wszystko działa to prawdo podobnie plik zmienił kodowanie, upewnij się czy masz utf-8 pliku (bez bom...)


Bez bom... ? Co to znaczy?


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #14





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(TomASS @ 29.04.2014, 00:53:46 ) *
Bez bom... ? Co to znaczy?

wiki, ale chodzi o to że plik ma mieć samo utf-8 bez żadnych dodatków.


--------------------
Go to the top of the page
+Quote Post
TomASS
post
Post #15





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Nic.

Co dziwne, kasuję:
  1. parent::set_charset("utf8");

a więc powinno być kodoawnie domyślne (czyli utf8),

sprawdzam:
  1. $db->character_set_name();

i dostaję
latin1 wacko.gif


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #16





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


  1. ALTER TABLE `tabela` CONVERT TO CHARACTER SET utf8;


--------------------
Go to the top of the page
+Quote Post
TomASS
post
Post #17





Grupa: Zarejestrowani
Postów: 1 660
Pomógł: 13
Dołączył: 9.06.2004
Skąd: Wrocław i okolice

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


Zrobiłem tak:
1. skopiowałem tabelę do "tabela_test" (przy pomocy PhpMyAdmina)
2. ustawiłem na niej ALTER TABLE `tabela` CONVERT TO CHARACTER SET utf8;
3. działa smile.gif

Natomiast ustawiając na tabela nie działa sad.gif


--------------------
Go to the top of the page
+Quote Post
ZaXaZ
post
Post #18





Grupa: Zarejestrowani
Postów: 285
Pomógł: 18
Dołączył: 30.01.2014
Skąd: <?=$_GET['city']?>

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


Cytat(TomASS @ 29.04.2014, 10:10:34 ) *
Zrobiłem tak:
Natomiast ustawiając na tabela nie działa sad.gif

tzn że na oryginale nie działa a na kopii działa? ohmy.gif. Jak tak to byś mógł skasować oryginał a na kopii tylko nazwę zmienić biggrin.gif


--------------------
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: 21.08.2025 - 19:55