2017-09-10 11 views
2

Django v1.10 및 Postgres 사용중국어와 같은 아시아 언어의 문자 길이를 적용하는 방법은 무엇입니까?

기호가 혼합 된 데이터 필드 (예 : \ |?), 숫자, 알파벳 문자 및 아시아 언어 문자가있을 수 있습니다.

사용자는이 필드의 최대 값은 15 자 여야한다고 말합니다.

Django와 Postgres를 데이터베이스로 사용하려면 어떻게해야합니까? 포스트그레스에서는 utf-8 인코딩을 사용합니다.

한 문자가 숫자 또는 한자 나 영어 알파벳 편지 나 PHP 알고

수 있으며, mb_strlen라는 함수가 있습니다. And in python, the equivalent would be to use unicode strings.

Django 방식에서 최대 문자열 길이를 적용하는 가장 좋은 방법은 무엇입니까?

답변

0

먼저 문자로 무엇을 의미하는지 정의해야합니다. 많은 문자열 길이 함수가 잘못 해석 한 언어 중 하나 인 korean에 대해 언급했습니다.

여러 유니 코드 문자가 같은 하나의 그래 핀 (사용자 인식 문자)를 설명하는 데 사용 할 수있다 : 유니 코드 문자열을 사용

>>> len(u"한") 
3 

은 유니 코드 문자의 수를 계산하기 쉽게 만들 것입니다,하지만 그건 아니다 사용자가 인식하는 문자 수와 동일합니다. 이 기사를 python text length에서 읽는 것이 좋습니다.

graphemes 대신 unicode 문자를 계산하려면 간단합니다. CharFieldmax_length 인수를 사용하십시오 (모델 및 양식에서).

그러나 필드를 최대 15 자로 제한하려면 데이터베이스 필드에 그보다 많은 문자가 포함되도록하고 양식에 custom validation을 만들어야합니다.

유효성 검사기에 유용한 라이브러리는 grapheme 일 수 있으며 문자열의 부분 수를 계산할 수 있습니다.

+0

문자를 숫자, 문자 또는 중국어 문자로 정의했습니다. –

+0

문자는 실제로 정의가 아닙니다. 예를 들어 위에서 사용 된 한글은 세 개의 유니 코드 문자 (한글 음절), 즉 ㅎ, ㅏ 및 ㄴ으로 구성됩니다. 한의 길이를 1 또는 3으로 계산 하시겠습니까? –

+0

나는 한국어와 일본어를 고려에서 제외했다. –