나는 어제부터이 문제에 대해 내 마음을 잃고있다.마지막으로 MySQL에서 utf8mb4를 올바르게 설정하는 방법은 무엇입니까?
MySQL 데이터베이스를 utf8에서 utf8mb4로 변환하려고합니다. 너무 https://mathiasbynens.be/notes/mysql-utf8mb4#utf8-to-utf8mb4는 등 Cannot store emoji in database, Change MySQL default character set to UTF-8 in my.cnf?,
내 데이터베이스가 예상대로 utf8mb4_unicode_ci collation
을 갖고있는 것 같아요, 그리고 그녀의 모든 테이블 이렇게하려면, 나는 그 사이트/스레드를 따랐다. 내가 SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%';
을 진행 그럼에도 불구
, 내가 얻을 : 데비안 7
이[client]
default-character-set = utf8mb4
[mysql]
default-character-set = utf8mb4
[mysqld]
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
init-connect = 'SET collation_connection = utf8mb4_unicode_ci'
init-connect = 'SET NAMES utf8mb4'
내 MySQL 버전은 5.5.54이다, 모든 설정 :
#With a Root access
Variable_name Value
character_set_client utf8 #expecting utf8mb4
character_set_connection utf8 #expecting utf8mb4
character_set_database utf8mb4 #good
character_set_filesystem binary #good
character_set_results utf8 #expecting utf8mb4
character_set_server utf8mb4 #good
character_set_system utf8 #expecting utf8mb4
collation_connection utf8_general_ci #expecting utf8mb4_unicode_ci
collation_database utf8mb4_unicode_ci #good
collation_server utf8mb4_unicode_ci #good
#With a standard user access
Variable_name Value
character_set_client utf8 #expecting utf8mb4
character_set_connection utf8mb4 #good
character_set_database utf8mb4 #good
character_set_filesystem binary #good
character_set_results utf8 #expecting utf8mb4
character_set_server utf8mb4 #good
character_set_system utf8 #expecting utf8mb4
collation_connection utf8mb4_unicode_ci #good
collation_database utf8mb4_unicode_ci #good
collation_server utf8mb4_unicode_ci #good
나는 이런
/etc/mysql/conf.d/90-my.cnf
파일을 설정합니다.
나를 도울 수있는 단서가 있습니까?
당신의 도움에 대한 들으, 내 나쁜 영어 죄송합니다 ...
편집
재미있는 사실 :
: 나는 인라인 명령에서 변수를 확인할 때, 나는이있어mysql> show variables like "%character%";
+--------------------------+----------------------------+
| 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 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
나는 (비 수퍼 유저 액세스) phpMyAdmin을 확인했을 때 여전히 character_set_client
에 대한 utf8
및 character_set_results
을 가지고 있지만
들으에서 우려를 많이 "모범 사례"를 참조하십시오. 방금 데이터베이스에 대한 표준 사용자 액세스로 문자/데이터 정렬 기능을 추가하기 위해 스레드를 편집했습니다. 결과는 나아졌지만 여전히 완벽하지는 않습니다. 나는 당신의 설명이 아주 좋다는 당신의 연결 한 포스트에 빨리보기를 가지고 갔다. 나는 직장에서 돌아 오면 곧 그걸 시험해 보겠다. 일이 있으면 말해 줄께. (Btw는'HEX (txt) '를 시도했는데 결과는 좋았습니다. 예상대로 모든 것이 16 진수로 인코딩 된 것 같습니다.) 어쨌든, 나는 당신을 신속하게 연락합니다. Thx again – Vae
헤이 릭, 여기 뉴스가있다 : 나는 당신이 "해야할 일"부분에서 언급 한 모든 것을 설정했다. 데이터의 테스트는 훌륭합니다 (이중 인코딩이 없으며 모든 문자가 올바르게 인식됩니다). 내 문제는 : emojis 대신 데이터베이스에 물음표가 있습니다 (그러나 내 웹 사이트에 올바르게 표시되어 있음). "저장할 바이트는 utf8/utf8mb4로 인코딩되지 않습니다.이 문제를 해결하십시오." 이 문제를 어떻게 해결할 수 있습니까? 참고로 PHP를 사용하고 있습니다. Thx가 다시 관심을 갖습니다. 곧 뵙죠. – Vae
"설명은 매우 좋습니다"- 나는 그 설명을 연마 한 지 몇 년 동안 관리하는 것이 싫다. –