やかんブログ

Doctrineの文字列長チェックにハマる

2009年04月16日(木)09:31|天方

こんにちは。天方です。最近、Symfony1.2のDoctrineではまりました。

Doctrineでデータを登録していたのですが、

    * 1 validator failed on name (length)

と出力されて登録ができていませんでした。

エラーの意味は、nameカラムの長さチェックが失敗しているというものだのですが、 設定も登録データの長さも適切なんです。 なんでだろうと思って、Doctrineの長さチェックのコードを見てみました。下記がそのコードです。

    public static function getStringLength($string)
    {
        if (function_exists('iconv_strlen')) {
            return iconv_strlen($string);
        } else if (function_exists('mb_strlen')) {
            return mb_strlen($string);
        } else {
            return strlen($string);
        }
    }

日本語については、mb_strlenを使っていると思ったら、iconv_strlenがある場合は そちらを使うようになっているのですね…。

今回はUTF-8を文字コードとして扱っているのですが、デフォルトではISO-8859-1が設定されているようなので、php.iniに

iconv.internal_encoding = UTF-8

を設定することで解決しました。

とりあえずiconv入れちゃえってphpビルドしていたばかりにハマりました・・・。

この記事に関するお問い合わせはこちら

関連する投稿:
  • No Related Post

ページの先頭へ