2017-05-09 4 views
0

어떤 이유인지 모르겠지만 utf32_general_ci 데이터 정렬 (위치의 예)과 기타 테이블이 latin1_swedish_ci 인 Kamailio 테이블이 있습니다.Kamailio 테이블의 MySQL 데이터 정렬

github repos (https://github.com/kamailio/kamailio/blob/4.4/scripts/mysql/my_create.sql)에 대한 답변을 찾으려고하는데 데이터 정렬이 지정되어 있지 않습니다.

맞습니까? 중요한거야? 어느 것이 옳은 선택입니까?

내 Kamailio 버전은 4.4.3입니다.

답변

1

Kamailio 란 무엇입니까? 데이터베이스에 무엇이 저장됩니까?

일반적으로 모든 소프트웨어는 오늘 UTF-8 문자 집합 인코딩을 사용해야합니다. MySQL에서 구문은 CHARACTER SET utf8mb4입니다.

두 개의 언급했는데 COLLATIONs; 문자 정렬이 아닌 정렬 순서와 관련이 있습니다. 언급 된 두 문자 세트는 문자 세트에 해당합니다.

  • utf32 - 문자 당 4 바이트가 공간을 낭비합니다. 사실 아무도 그것을 사용하지 않습니다. 내가 그것을 사용할 수있는 좋은 이유가 없다.
  • latin1 - 문자 당 1 바이트. 서유럽을 처리하지만 아시아는 없습니다. 그것은 MySQL에서 오래된 기본값입니다 (따라서 테이블이 있습니다).

나는 Kamailio를 변경하려고 할 때의 파급 효과에 대해 알지 못합니다.

MySQL이 문자 집합의 차이를 처리하는 방법에 대해주의해야 할 점 : MySQL에 연결할 때 클라이언트에 인코딩을 지정해야합니다. 이어서 (필요하다면, 그리고 가능한 경우), 및시 INSERTingSELECTing MySQL은 변환 될 클라이언트 인코딩 인코딩 사이. 이 자동 변환으로 인해 현재 서유럽 문자에는 아무 것도 표시되지 않습니다. 그러나 그리스어, 중국어 등은 latin1에 저장하려고 할 때 엉망이되거나 손실됩니다.

+0

그런 다음 바이너리가 투명합니까? –

+1

@JavierValencia - _If_ 테이블의'CHARACTER SET'은 문자를 저장할 수 있고 _if_ 클라이언트에서 문자의 인코딩을 정확하게 식별 할 수 있습니다. 그리고 _if_ 두 문자셋 사이에 매핑이 있다면, MySQL은 올바르게 비트를 변경합니다 the fly ('INSERTing'과'SELECTing')입니다. '이진'_code_은 정적/동적 설정에 의해 움직입니다. '바이너리'데이터는 _Operating Systems_에서 동일하게 저장됩니다. (아니면 다른 것을 물어 보는 것입니까?) –

+1

'utf8mb4'와'utf32' _probably_는 다른 어떤 문자 집합에도 매핑 할 수 있습니다. ("그게 그들의 직업이에요.") –