![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 10.05.2016 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Mam baze danych MySQL testdb. Posiadam 2 serwery, oba uzywaja tej samej bazy danych w sensie ten sam IP bazy danych etc - doslownie ta sama baza danych. Na pierwszym serwerze (PHP 5.4) polskie znaki wyciagane z MySQL wyswietlaja sie dobrze. Na drugim (PHP 7) (ktory uzywa tej samej bazy), polskie znaki wyciagane z MySQL sa tzw. krzakami. Na obu serwerach polskie znaki w statycznym tekscie w plikach php sa wyswietlane OK. Na drugim serwerze probowalem wszystkich opcji: Kod 'SET CHARACTER_SET utf8_unicode_ci' "SET CHARSET utf8" "SET NAMES `utf8` COLLATE `utf8_polish_ci` mysqli_set_charset($conn, "utf8"); Uzywa mysqli. Dzieki z gory za pomysly! ;-) Wow. Linijka: Kod var_dump(mysqli_get_charset($conn)); Gdzie conn jest mysqli instance. Server 1 daje: Kod object(stdClass)#3 (8) { ["charset"]=> string(6) "latin1" ["collation"]=> string(17) "latin1_swedish_ci" Server 2 daje: Kod object(stdClass)#2 (8) { ["charset"]=> string(4) "utf8" ["collation"]=> string(15) "utf8_general_ci" Na server 2 dodalem po laczeniu do db: Kod mysqli_set_charset($conn, "latin1"); Teraz server 2 var_dump na mysqli_get_charset pokazuje tak jak na server 1. Kod object(stdClass)#2 (8) { ["charset"]=> string(6) "latin1" ["collation"]=> string(17) "latin1_swedish_ci" I teraz polskie znaki sie wyswietlaja....... dziwne i niewarygodne przygody...... Takto ogolnie: HTML Header jest taki: Kod <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> Wszystkie tabele CREATE TABLE skrypty maja Kod DEFAULT CHARSET=utf8 Deklaracja tworzenia bazy danych z backupu jest Kod CREATE DATABASE `testdb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Ten post edytował jankomuzykant 11.05.2016, 11:45:01
Powód edycji: [nospor]:
|
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Rozumiem że problem rozwiązałeś ?
![]() PS. Edytuj swojego posta i powywalaj zbędne entery z bloków CODE (chyba że to jakiś ciekawy błąd forum) |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 10.05.2016 Ostrzeżenie: (0%) ![]() ![]() |
Hej @Pyton_000
Problem rozwiazany - pytanie pozostaje, czemu latin1 musze dac na mysqli skoro schema, table i wszystko inne jest utf8? Bloki CODE maja tylko ten kod, zero zbednych spacji, wyglada ze to bugietka na forum. ;-) Ten post edytował jankomuzykant 11.05.2016, 10:15:55 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czyli jest 1 serwer z BD, i 2 serwery aplikacyjne.
na tych 2 serwerach jest dokładnie taka sama aplikacja ? (1:1) |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat Bloki CODE maja tylko ten kod, zero zbednych spacji, wyglada ze to bugietka na forum. ;-) Jakbys uzywal CODE zamiast CODEBOX to by zadnej bagietki nie bylo... ![]()
Powód edycji: [nospor]:
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 10.05.2016 Ostrzeżenie: (0%) ![]() ![]() |
Czyli jest 1 serwer z BD, i 2 serwery aplikacyjne. na tych 2 serwerach jest dokładnie taka sama aplikacja ? (1:1) Tak, Pyton_000, 1:1, juz nie bo na server 2 musze dawac latin1 po tworzeniu mysqli Jakbys uzywal CODE zamiast CODEBOX to by zadnej bagietki nie bylo... ![]() Dzieki @nospor - poprawione! :-) To przez to ze w panelu "Szybki dostep" podczas edycji zmienic jest "Wstaw: CODEBOX", mozna by zmienic/lub dodac na "Wstaw: CODE"? |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Czyli wychodzi na to że Domyślnie serwer SQL zapodaje na Latin1, PHP5.4 także, a PHP7 na UTF-8. Dlaczego? Nie wiem. Porównaj phpinfo() z obu serwerów a może tam się ukaże prawda
![]() |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 4 Pomógł: 0 Dołączył: 10.05.2016 Ostrzeżenie: (0%) ![]() ![]() |
Czyli wychodzi na to że Domyślnie serwer SQL zapodaje na Latin1, PHP5.4 także, a PHP7 na UTF-8. Dlaczego? Nie wiem. Porównaj phpinfo() z obu serwerów a może tam się ukaże prawda ![]() phpinfo nie ma zadnych referencji do latin1 Ale: Kod mysql> show variables like 'character%'; Na testdb daje: Kod character_set_client utf8 character_set_connection utf8 character_set_database utf8 character_set_filesystem binary character_set_results utf8 character_set_server latin1 character_set_system utf8 Nadal, tabele i schema etc sa utf8 na testdb. Skoro sa w utf8, uzywajac Kod mysqli_set_charset($conn, "latin1"); nie powinno dawac polskich znakow na server 2... ale daje... Dziwne, dziwne...http://php.net/manual/en/mysqli.set-charset.php ustawia character_set_client Wyglada na to ze server 1 musi wewnetrznie jakos zmieniac character_set_client na latin1 (character_set_client na testdb jest utf8 domyslnie) i server 2 musi wywolac mysqli_set_charset aby character_set_client byly takie same jak character_set_server?? Wyglada na to ze skoro testdb uzywa latin1 character_set_server, pomimo faktu ze tabele i schema sa utf8 i character_set_client jest utf8, nowy server 2 musi mysqli_set_charset na latin1 zeby bylo jak character_set_server na testdb, wiecej na temat: https://tosiek.pl/o-co-chodzi-z-latin1-i-dl...-polskie-znaki/ Co za przygody! ;-) Ten post edytował jankomuzykant 11.05.2016, 23:20:42 |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 18.07.2025 - 04:14 |