4

Zend Framework にZend_Validate_StringLengthは、異なる文字セット間の変換に使用できるエンコーディング プロパティがあります (iconv_set_encoding文字列で使用します)。

なぜこれがStringLengthバリデータークラスの一部なのですか? UTF-8 を強制するために、文字列長フィールド チェックでこれを使用する必要がありますか?

4

2 に答える 2

3

PHP の文字列の長さは、文字列を保存するために必要なバイト数です。一部のエンコーディングでは、1 つの文字を格納するために複数のバイト (たとえば 2 つ) を使用します。

したがって、一部の文字を複数バイトで格納するエンコーディング (Unicode UTF-8 など) を使用する場合は、このエンコーディングを使用して文字列の長さを適切に判断する必要があります。デフォルトのエンコード設定を使用すると、不正確な結果が得られる場合があります。

ただし、すべての Zend コンポーネントのデフォルトは、Web アプリケーションのデファクト スタンダードである UTF-8 だと思います。残念ながら、これは PHP のデフォルトではありません (まだ)。

于 2011-07-24T22:14:25.207 に答える
0

実際にはiconv_set_encoding、現在のサーバーが指定されたをサポートしているかどうかをテストするためだけに使用します$encoding。実際の比較は で行われiconv_strlen()ます。

2 番目の質問を理解できるかどうかわかりません。文字列の長さを検証する必要がある場合は、このバリデーターを使用する必要があります。

于 2011-07-24T02:46:04.813 に答える