Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MSQL][UTF] Dziwne znaki z emotek - błąd serwera
Forum PHP.pl > Forum > Przedszkole
Dopler
Na klasycznym forum PHPBB które użytkuję pojawił się problem, którego nawet nie potrafię dobrze zdefiniować, więc z góry przepraszam jeśli jest źle opisany lub umieszczony lub się powtarza.

Użytkownik wysyłał wiadomość prywatną do innego użytkownika i przy wysyłaniu otrzymywał komunikat o błędzie serwera - wywalało całą stronę

SQL ERROR [ mysql4 ]
Incorrect string value: 'ðpr...' for column 'message_text' at row 1 [1366]
Wystąpił błąd bazy danych podczas pobierania tej strony. Jeśli problem będzie się powtarzał, skontaktuj się z administratorem.


Okazało się że stronę przeglądał na telefonie i wprowadzał do wiadomości emotki generowane przez telefon.
W rezultacie we frazie "ðpr..." między znakami "ð" oraz "p" były jeszcze trzy niewidoczne znaki, wyświetlane dopiero przy ręcznym przeniesieniu frazy do enkodera UTF, Znaki te miały postać domyślnych prostokącików.

ð∟∟∟pr...
\xC3\xB0\xC2\x9F\xC2\x98\xC2\x89\x70\x72\x2E\x2E\x2E

Jak widać pierwszy znak i trzy niewidoczne mają podwójny kod. (nawet nie mogę ich wkleić tutaj bo przy podglądzie znikają, dlatego są symulowane przez znak ∟)

Ja nawet nie bardzo rozumiem na czym polega ten problem, a co dopiero wymyślić jak się przed nim zabezpieczyć

EDIT: zaznaczam że tabela i kolumna mają metodę porównywania znaków utf8_polish_ci
Pyton_000
kolumny powinny być kodowane utf8mb4
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.