Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP][MySQL]Znaki specjalne nie wyświetlają się poprawnie
lekosm2
post
Post #1





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 9.10.2015

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


Hej, mam problem z pobraniem nazw użytkowników,którzy mają znaki specjalne.
Dla przykładu mam użytkownika o nazwie: Ψ♂тoхιc✔Ψ™
W bazie danych wygląda to tak:
(IMG:https://i.imgur.com/R0bFDrY.png)

Lecz już po pobraniu go z bazy danych na stronie wyświetla się tak: (IMG:style_emoticons/default/questionmark.gif) ?o??c??�


Ktoś wie jak rozwiązać ten problem?

Ten post edytował lekosm2 19.08.2020, 22:09:05
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 11)
Szado
post
Post #2





Grupa: Zarejestrowani
Postów: 22
Pomógł: 4
Dołączył: 30.05.2017

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


Ustaw poprawne kodowanie podczas łączenia z bazą.

Ten post edytował Szado 19.08.2020, 22:16:18
Go to the top of the page
+Quote Post
lekosm2
post
Post #3





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 9.10.2015

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


Zrobiłem tak i nicki się poprawnie wyświetlają, ale posty wyglądają tak:
Władzę poznawczą musiemy mu jego czyny z pobudki mogł co ująć od Dobra musiemy mu w przeciwnym razie niebyłoby najwyższego dobra był człowiek trwać ma: więc ma naturalna ustawa moralna wiara niejest wiedzą czyli Wendów. Więc ja niejest biernym.

Ten post edytował lekosm2 20.08.2020, 09:46:16
Go to the top of the page
+Quote Post
gino
post
Post #4





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


jeżeli faktycznie tak zrobiłeś, to sprawdź jeszcze kodowanie strony html:

  1. <meta charset="utf-8">


gino

PS. Na pols text, varchar masz założone kodowanie uft8_polish_ci ?

Ten post edytował gino 20.08.2020, 10:15:05
Go to the top of the page
+Quote Post
lekosm2
post
Post #5





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 9.10.2015

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


Mam, problem polega na tym, że gdy do bazy danych dodam ręcznie tekst z polskimi znakami, to się poprawnie zapisuje, ale gdy podczas instalacji skryptu są dodawane polskie znaki:
  1. $core->db()->pdo()->exec("INSERT INTO `blog` VALUES (2,'Początek traktatu czasu panowania Fryderyka Wielkiego','poczatek-traktatu-czasu-panowania-fryderyka-wielkiego',1,'<p>Władzę poznawczą musiemy mu jego czyny z pobudki mogł co ująć od Dobra musiemy mu w przeciwnym razie niebyłoby najwyższego dobra był człowiek trwać ma: więc ma naturalna ustawa moralna wiara niejest wiedzą czyli Wendów. Więc ja niejest biernym. Nieskończoność Boską można było spodziewać zawdzięczającej nagrody, niż od tego pokazuje żem ja substancyą Każda kompozycya może np. niebo jako człowiek walczyć musi być wzruszona. Ale wszystkie te rzeczy naturalnych utworzeniem istoty jest przeciw sprawiedliwości Dobraj, którąby przestrzeń ograniczała. Przez wszechmocność Boską można przedstawić lepszy plan względem innych takim razie podług biegu rzeczy możliwe, więc w sobie warunki sprawowania się nie kunsztu. Dyogenes miał nic wydarzyć niemoże, ani więcej nad tą lub zupełne poznanie niebędzie czasem w piosence: Marusieńka po naszym pojęciom o przedmiotach, mają być wzniecone, ażeby Subjekt przez podzielenie realności, albo drugim przypadku bez różnicy w Dobru: że często chwalebna poczciwość upadła, gdyby nasza własna wina. Tak też takie postępowanie niebyłoby najwyższego dobra był ideał świętości Dobraj. Kiedy więc nie było powszechne, tedyćby go czas ograniczał.</p>','<p>Władzę poznawczą musiemy mu jego czyny z pobudki mogł co ująć od Dobra musiemy mu w przeciwnym razie niebyłoby najwyższego dobra był człowiek trwać ma: więc ma naturalna ustawa moralna wiara niejest wiedzą czyli Wendów. Więc ja niejest biernym.','default2.jpg',2,'pl_polski',1,0,".time().",".time().",".time().")");

To w bazie danych zapisują się "krzaki" i później te "krzaki" są wyświetlane na stronie:
<p>Władzę poznawczą musiemy mu jego czyny z pobudki mogł co ująć od Dobra musiemy mu w przeciwnym razie niebyłoby najwyższego dobra był człowiek trwać ma: więc ma naturalna ustawa moralna wiara niejest wiedzą czyli Wendów. Więc ja niejest biernym. Nieskończoność Boską można było spodziewać zawdzięczającej nagrody, niż od tego pokazuje żem ja substancyą Każda kompozycya może np. niebo jako człowiek walczyć musi być wzruszona. Ale wszystkie te rzeczy naturalnych utworzeniem istoty jest przeciw sprawiedliwości Dobraj, którąby przestrzeń ograniczała. Przez wszechmocność Boską można przedstawić lepszy plan względem innych takim razie podług biegu rzeczy możliwe, więc w sobie warunki sprawowania się nie kunsztu. Dyogenes miał nic wydarzyć niemoże, ani więcej nad tą lub zupełne poznanie niebędzie czasem w piosence: Marusieńka po naszym pojęciom o przedmiotach, mają być wzniecone, ażeby Subjekt przez podzielenie realności, albo drugim przypadku bez różnicy w Dobru: że często chwalebna poczciwość upadła, gdyby nasza własna wina. Tak też takie postępowanie niebyłoby najwyższego dobra był ideał świętości Dobraj. Kiedy więc nie było powszechne, tedyćby go czas ograniczał.</p>

Więc problem leży raczej w $core->db()->pdo()->exec(); tylko nie wiem jak go rozwiązać.

A tak wygląda cały moduł instalacji bloga: https://pastebin.com/QTnaYhbW

Ten post edytował lekosm2 20.08.2020, 10:32:07
Go to the top of the page
+Quote Post
gino
post
Post #6





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


piszesz teraz o pliku instalatora, rozumiem, że masz plik, który dodaje ten rekord do bazy po uruchomieniu, otwórz ten plik w edytorze i zobacz czy nie położyłeś kodowania w edytorze, ma być też UTF-8

gino

na pola typu text dodaj podczas tworzenia tabeli

Kod
COLLATE utf8_polish_ci


Ten post edytował gino 20.08.2020, 10:50:55
Go to the top of the page
+Quote Post
lekosm2
post
Post #7





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 9.10.2015

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


Cytat(gino @ 20.08.2020, 11:36:19 ) *
piszesz teraz o pliku instalatora, rozumiem, że masz plik, który dodaje ten rekord do bazy po uruchomieniu, otwórz ten plik w edytorze i zobacz czy nie położyłeś kodowania w edytorze, ma być też UTF-8

gino

na pola typu text dodaj podczas tworzenia tabeli

Kod
COLLATE utf8_polish_ci


Kodowanie w notepad++ m,am ustawione na utf-8 w module instalacji zamieniłem:
  1. `title` varchar(150) NOT NULL,

na
  1. `title` VARCHAR(150) CHARACTER SET utf8 COLLATE utf8_polish_ci NOT NULL,


I nadal do bazy danych zapisały się krzaki.

Dla pewności sprawdziłem również wszystkie pliki .php czy mają poprawne kodowanie i wszystkie mają UTF-8

Ten post edytował lekosm2 20.08.2020, 11:27:19
Go to the top of the page
+Quote Post
viking
post
Post #8





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Biorąc pod uwagę że ten cały batflat jest polskim produktem naprawdę wątpliwe że nie obsługuje poprawnie pl literek. Chyba że o SET NAMES gdzieś zapomnieli.
Go to the top of the page
+Quote Post
lekosm2
post
Post #9





Grupa: Zarejestrowani
Postów: 141
Pomógł: 0
Dołączył: 9.10.2015

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


Cytat(viking @ 20.08.2020, 12:32:41 ) *
Biorąc pod uwagę że ten cały batflat jest polskim produktem naprawdę wątpliwe że nie obsługuje poprawnie pl literek. Chyba że o SET NAMES gdzieś zapomnieli.

Domyślnie w bazie danych zapisywały się polskie znaki z krzakami i przed zmodyfikowaniem
  1. QueryBuilder::connect("mysql:host=".MYSQL_HOST.";dbname=".MYSQL_DB.";", MYSQL_USER, MYSQL_PASS);

na
  1. QueryBuilder::connect("mysql:host=".MYSQL_HOST.";dbname=".MYSQL_DB.";charset=utf8", MYSQL_USER, MYSQL_PASS);

działało poprawnie ale wtedy nazwy użytkowników ze znakami specjalnymi nie wyświetlały się poprawnie.

Problem dotyczy tylko dodawania danych do bazy danych podczas instalacji, bo gdy dodaje treści z polskimi znakami, z panelu administratora to normalnie się zapisują do bazy danych i nie ma z nimi problemu.
(IMG:https://i.imgur.com/ZruOZCD.png)
Go to the top of the page
+Quote Post
viking
post
Post #10





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Rzuciłem szybko okiem na ten kod i nie wygląda żeby gdzieś ustawiali prawidłowe kodowanie dla połączeń.
Go to the top of the page
+Quote Post
gino
post
Post #11





Grupa: Zarejestrowani
Postów: 324
Pomógł: 52
Dołączył: 18.02.2008

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


normalnie ten cms chodzi na sqllite, nie używam tego silnika DB może tu leży problem

gino
Go to the top of the page
+Quote Post
viking
post
Post #12





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

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


Najlepszym wyjściem to było by oczywiście zastosować coś bardziej popularnego a nie męczyć się z marnie napisanym kodem. Ja bym szukał czegoś w oparciu o Laravel np. Statamic.
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: 24.08.2025 - 10:31