2013-01-23 11 views
6

Chcę zapisać emotikony w bazie danych MySql i zdaję sobie sprawę, że trzy bajty Emoji są poprawnie zapisywane w bazie danych, ale emulatory 4-bajtowe zostały zapisane jako znaki zapytania. Wygląda na to, że w pełni przekonwertowałem utf8 na utf8mb4, ale nie wiem, czego dokładnie tu brakuje. Moja wersja MySQL 5.05.29, gdy robię SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; w MySQL powłoki, to pokazuje, co następuje:phpMyAdmin mysql zapisany Emoji jako znak zapytania

+--------------------------+--------------------+ 
| Variable_name   | Value    | 
+--------------------------+--------------------+ 
| character_set_client  | utf8mb4   | 
| character_set_connection | utf8mb4   | 
| character_set_database | utf8mb4   | 
| character_set_filesystem | binary    | 
| character_set_results | utf8mb4   | 
| character_set_server  | utf8mb4   | 
| character_set_system  | utf8    | 
| collation_connection  | utf8mb4_unicode_ci | 
| collation_database  | utf8mb4_unicode_ci | 
| collation_server   | utf8mb4_unicode_ci | 
+--------------------------+--------------------+ 

Teraz, dla celów testowania, mam tylko 1 bazę danych z tabeli 1 stworzonej przetestować Emotikon oszczędności. I stworzył bazę danych przez phpMyAdmin i stworzył tabelę poprzez MySql powłoki:

CREATE TABLE `test_emojis` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `content` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; 

i nadal nie działa (jeszcze znaki zapytania).

Jednak znalazłem coś interesującego, widzę znaki zapytania w phpMyAdmin, ale widzę ikonę emoji poprawnie w powłoce Mysql, jeśli wpisuję select * from test_emoji; jakieś pomysły?

Czy ktoś może pomóc?

Dzięki

+0

Czy jesteś pewien, że twój klient (phpMyAdmin) rzeczywiście łączy się z serwerem przy użyciu zestawu znaków utf8mb4? Powtórz powyższe zapytanie z poziomu phpMyAdmin –

+1

Cześć, Michel, dzięki za przypomnienie, zrozumiałem, że również mój myphpadmin w rzeczywistości wciąż używa utf8, dlatego nie widzę go na kliencie phpmyadmin, ale widzę go na powłoce MySQL . Mam jednak tutaj nowe pytanie. Przeczytaj ten post: http://stackoverflow.com/questions/14488503/ios-cannot-decode-emoji-unicode-in-json-format-correctly-and-emoji-icons-are-di – user2002692

Odpowiedz

3

phpMyAdmin został ustalony utf8 charset więc trzeba by edytować jego kod, aby to zmienić. Dla przyszłych wersji jest on poprawiony w fb30c14 (pokazuje również, gdzie zmienić te wartości).

2

Uaktualnij swój phpMyAdmin do wersji> = 4.3.9 i problem rozwiązany.

Powiązane problemy