2017-09-10 5 views
2

Django v1.10とPostgresを使用する中国語などのアジア言語の文字長を適用する方法は?

記号の組み合わせ(\ |など)、数字、アルファベット、アジア言語の文字を含むことがあるデータフィールドがあります。

このフィールドの最大値は15文字である必要があります。

DjangoとPostgresをデータベースとして使用するにはどうすればよいですか?ポストグルでは、utf-8エンコーディングを使用します。

1文字が数字や漢字や英語のアルファベットの手紙私はPHPで知っ

であってもよいし、mb_strlenと呼ばれる機能があります。 And in python, the equivalent would be to use unicode strings

Djangoの方法の中で、最大文字列の長さを強制する最良の方法は何ですか?

答えて

0

まず、文字の意味を定義することから始めなければなりません。多くの文字列長関数が誤解している言語の1つであるkoreanに言及しました。

複数のUnicode文字は、次のような、単一書記素(ユーザーの知覚文字)を記述するために使用することができる:Unicode文字列を使用して

>>> len(u"한") 
3 

は、Unicode文字の数をカウントすることが簡単になりますが、それはないですユーザが知覚する文字の数と同じです。私はpython text lengthでこの記事を読むことをお勧めします。

graphemesの代わりにunicode文字を数えたい場合は、単純です。 CharFieldmax_lengthという引数(モデルとフォーム上)を使用してください。

ただし、最大フィールド数を15に制限したい場合は、データベースフィールドにそれよりも多くの文字が含まれるようにして、フォームにcustom validationを作成する必要があります。

このようなバリデータに役立つライブラリは、graphemeであり、文字列内のグラフェン数を計算できます。

+0

数字、文字、または漢字として文字を定義しました –

+0

文字は実際には定義でもありません。例えば、上で使用された記号1は、3つのユニコード文字(ハングル・シラブル):ㅎ、ㅏ、ㄴで構成されています。あなたは1の長さを1または3と数えますか? –

+0

私は考察から韓国語と日本語を除いた –

関連する問題