질문 제목에서 알 수 있듯이 Wordpress가 MySQL 문자 집합 및 데이터 정렬 옵션과 어떻게 작동하는지 이해하고 싶습니다. 아래에서 볼 수 있듯이, 나에게는별로 이해가되지 않습니다 ...
설치 페이지의 지침에 따라 Wordpress를 설치했습니다.
https://codex.wordpress.org/Installing_WordPress
지침의 일부로, 나는 커맨드 라인에서 MySQL 데이터베이스를 수동으로 생성하는 것에 대한 조언, 즉 명령을 따랐습니다.
mysql> CREATE DATABASE databasename;
Query OK, 1 row affected (0.00 sec)
mysql> GRANT ALL PRIVILEGES ON databasename.* TO "wordpressusername"@"hostname"
-> IDENTIFIED BY "password";
Query OK, 0 rows affected (0.00 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql> EXIT
또한 지시에 따라 UTF-8 문자 세트를 사용하도록 "wp-config.php"파일을 편집했습니다.
define( 'DB_CHARSET', 'utf8' );
데이터 정렬 설정을 비워 두었습니다.
define( 'DB_COLLATE', '' );
재미가 시작되는 곳은 다음과 같습니다.
MySQL UTF-8의 일부는 아니지만 𝌆와 같은 UTF-8 MB4의 일부인 문자를 게시물에 입력하면 렌더링 된 페이지에 올바르게 표시됩니다. 문자 세트를 UTF-8 MB4로 설정하지 않았지만 더 제한적인 UTF-8 (물론 MySQL에서 정의 한대로 일반적으로 이해되지는 않음)으로 인해이가 발생하지 않을 것으로 예상했습니다.
커맨드 라인에서 MySQL의 문제를 조사하면 더 이상해집니다. 을 실행
show variables like 'char%';
하면 다음과 같은 응답이 나타납니다.+--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | latin1 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+
데이터베이스 문자 세트는 latin1이 아닌 UTF-8로 예상되었습니다.
명령을 실행하면
show variables like 'collation%';
출력은 다음과 같습니다.+----------------------+-------------------+ | Variable_name | Value | +----------------------+-------------------+ | collation_connection | utf8_general_ci | | collation_database | latin1_swedish_ci | | collation_server | latin1_swedish_ci | +----------------------+-------------------+
명백한 이유로 (아직 UTF-8 데이터베이스에서 기본 latin1_swedish_ci 데이터 정렬을 기대하지 않았을 수도 있음) 그것은 낯선 일입니다.
- 마지막으로을 실행
show full columns from mywpdatabase.wp_posts;
하면 값이 NULL이 아닌 출력 행이 데이터 정렬을 다음과 같이 표시합니다.
| post_content_filtered | longtext | utf8mb4_unicode_ci |
내 질문은 다음과 같습니다-어떻게 설명 할 수 있습니까? 데이터베이스가 구성에서 UTF-8로 정의 된 경우 Wordpress 설치에서 UTF-8 MB4 문자를 올바르게 렌더링하는 이유는 무엇입니까? 왜 데이터베이스가 MySQL에서 UTF-8 대신 latin1, 스웨덴어 데이터 정렬로 표시됩니까? 그리고이 모든 것에도 불구하고 테이블의 개별 필드는 utf8mb4_unicode_ci입니까? Wordpress가 MySQL에서 작동하는 방식에 대한 저수준 설명은 매우 유용합니다. 감사합니다!