4

1つのサイトが、Solarisおよびその他のiconv設定がインストールされている別のサーバーに移動されました。これで、Zend Frameworkの「StringLength」関数を使用して何かを検証すると、スクリプトが次のエラーで失敗します。

Notice: iconv_strlen() [function.iconv-strlen]: Wrong charset, conversion from `UTF-8' to `UCS-4LE' is not allowed in /usr_files/phplibs/library/Zend/Validate/StringLength.php on line 213

私が理解したように、サーバーは「UCS-4LE」について知っており、それが主な問題です。

サーバー管理者は、この問題を解決できると答えました。このサーバーでZFをセットアップする方法について何かアイデアはありますか?

4

2 に答える 2

1

iconv ライブラリは「UCS-4LE」でエンコードされた文字列を予期していましたが、「UTF-8」として検出されたものを受け取りました。新しいサーバーでは、おそらく別のデフォルト エンコーディングが使用されています。3 番目のパラメーターをコンストラクターに(as として)渡してみてください'utf-8'

于 2009-10-21T17:42:32.820 に答える
0

古いトピックですが、これは今日、xampp (Linux Suse、PHP 5.3.5、Zend Framework 1.11.10) を実行する新しいサーバーに移動しているときに思い浮かびました。次のテスト スクリプトを使用して、上記のエラーを再現しました。

<?php
echo iconv_strlen("hello");
?>

コマンドラインとブラウザの両方で。いくつかのトラブルシューティングの後、次の方法で当面の問題を「解決」したことがわかりました。

<?php
echo iconv_strlen("hello", 'utf-8');
?>

また

<?php
iconv_set_encoding("internal_encoding", "UTF-8");
echo iconv_strlen("hello");
?>

ただし、ZF に iconv_set_encoding を追加しても機能しませんでした。

変更を永続的にするためにphp.iniを変更すると、ZFで機能しました

[iconv]
iconv.input_encoding = ISO-8859-1
iconv.internal_encoding = UTF-8
iconv.output_encoding = ISO-8859-1

しかし、iconv が新しいサーバーで機能する本来の理由は、私にはわかりません。

于 2011-09-19T13:55:36.090 に答える