문제

MySQL 테이블을 대소문자를 구분하지 않는 기본 스웨덴어 또는 ASCII 문자 세트에서 utf-8로 마이그레이션하려고 할 때 주의해야 할 팁이나 순간이 있는 사람이 있습니까?제가 참여하고 있는 일부 프로젝트는 더 나은 국제화를 위해 노력하고 있으며 데이터베이스는 이러한 변화의 중요한 부분이 될 것입니다.

데이터베이스를 변경하기 전에 각 사이트를 UTF-8 문자 인코딩(가장 덜 중요한 것부터 가장 중요한 것까지)을 사용하도록 변환하여 모든 입력/출력이 동일한 문자 집합을 사용하도록 할 것입니다.

어떤 도움을 주셔서 감사합니다

도움이 되었습니까?

해결책

몇 가지 힌트:

  • 당신의 CHAR 그리고 VARCHAR 열은 최대 3배 더 많은 디스크 공간을 사용합니다.(아마도 스웨덴어 단어에 대한 디스크 공간이 많이 늘어나지 않을 것입니다.)
  • 사용 SET NAMES utf8 데이터베이스를 읽거나 쓰기 전에.그렇지 않으면 부분적으로 잘못된 문자가 표시됩니다.

다른 팁

답변을 찾는 데 도움이 되도록 다음 사이트/기사를 검토하겠습니다.

모든 소프트웨어 개발자가 유니코드 및 문자 집합에 대해 절대적으로, 긍정적으로 알아야 하는 최소한의 정보(변명은 없습니다!) - Joel on Software

UTF-8 및 유니코드 FAQ

Hansel Minutes 에피소드 "Michael Kaplan과 함께하는 국제화 정리"

그리고 저는 이 글을 쓰던 중 Derek Sivers @ O'Reilly ONLamp 블로그의 매우 관련 있는 게시물을 발견했습니다. latin1의 MySQL 데이터를 utf8 utf-8로 변환

인덱스 길이 제한에 주의하세요.테이블이 구조화되어 있는 경우 다음과 같이 말합니다.

A Varchar (255) B Varchar (255) 키 ( 'A', 'B')

키 길이 제한이 1000바이트를 초과하게 됩니다.255+255는 괜찮지만 255*3 + 255*3은 작동하지 않습니다.

당신의 CHAR 그리고 VARCHAR 열은 최대 3배 더 많은 디스크 공간을 사용합니다.

서수가 128보다 큰 latin-1로 가득 찬 경우에만 가능합니다.그렇지 않으면 UTF-8의 증가된 공간 사용이 최소화됩니다.

데이터 정렬이 항상 유리한 것은 아닙니다.항상 정확하지는 않은 움랏이 아닌 버전과 대조되는 움랏을 얻게 됩니다.utf8_bin을 사용하고 싶을 수도 있지만 모든 것이 대소문자를 구분합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top