2009-06-23 3 views

답변

2

아마도. jason이 지적했듯이 나는주의를 기울이지 않았기 때문에 MySQL UTF-8은 Basic Multilingual Plane만을 매핑합니다. 그러나 매뉴얼은 "utf8과 ucs2는 대부분의 주요 언어의 모든 문자에 대해 충분합니다"라고 지적하고 있습니다. 따라서 아마 안전 할 것이지만 확실하게 Basic Multilingual Plane에있는 것을 확인하고 싶을 수도 있습니다.

시킴으로 빨리 대답

만큼 데이터베이스는 VARCHAR과 TEXT를 고수 할 수 있어야한다 UTF-8을 사용하고있다. (참고로 MySQL manual은 공간을 절약하기 위해 UTF-8로 VARCHAR 대신 VARCHAR을 사용하는 것이 좋습니다.이 경우 VARCHAR 및 TEXT를 사용하는 것이 안전해야합니다.)

+0

*** [MySQL 데이터베이스에서 전체 유니 코드를 지원하는 방법] (http://mathiasbynens.be/notes/mysql-utf8mb4) ***을 참조하십시오. –

3

반드시 그렇지는 않습니다. MySQL의 UTF-8 지원은 3 바이트 UTF8로만 제한됩니다. 여기에는 Basic Multilingual Plane까지 포함됩니다. BLOB 저장소를 사용해야하는 4 바이트 범위의 문자가 필요한 경우에만 해당됩니다. 이것은 드물지만 완전히 드문 것은 아닙니다. 누락 된 부분에 대한 설명은 Wikipedia 기사를 참조하고 필요한 항목이 있는지 확인하십시오.

0

다음은 PHP에서 UTF-8을 다루는 데 좋은 link입니다. 데이터 정렬 권한을 설정하면 MySQL이 UTF-8로 잘 처리됩니다. 반면 PHP에는 많은 문제가 있습니다.

+1

그 링크 된 기사는 적절한 UTF-8 인코딩에 해당하지 않는 MySQL의'utf8'을 사용하는 방법을 설명합니다. 링크를 무시하고 대신'utf8mb4'를 사용하십시오. 자세한 내용은 http://mathiasbynens.be/notes/mysql-utf8mb4를 참조하십시오. –

0

물론 VARCHAR을 사용하여 UTF-8 텍스트를 저장하는 것이 안전하며 VARBINARY는 필요하지 않습니다.

VARCHAR는 "CHARACTER WITH VARIABLE LENGTH"이며, 선택된 CHARCODE에 따라 문자를 저장하는 데 필요한 BYTES 수에 완벽하게 적응합니다.

MySQL의 UTF-8 지원이 3 바이트로 제한되는 이유도 있습니다. UTF-8의 인코딩 절차에 대해 이야기하는 관련 UTF-8 문서를 읽어보고 올바른 이유를 이해해야합니다.

UTF-8에 대해 확실하지 않은 경우 언제든지 UTF-16을 사용할 수 있습니다. 그럼에도 불구하고 올바른 바이트 길이에 완벽하게 적응할 수 있기 때문에 여전히 VARCHAR을 사용할 것입니다.