2

この奇妙な問題の解決策を見つけることができませんでした。

Mysql データベースからのデータが取り込まれた Zend_Form があります。UTF-8用にすべてのセットアップを行いました

resources.db.params.charset = "UTF8" および $this->_view->headMeta()->appendHttpEquiv('Content-Type', 'text/html; charset=UTF-8');

データベースから取得した結果セットは、アクセントなどすべて問題ありませんが、フォームに入力しようとすると、á ではなく á などのように表示されます。htmlspecialchars_decode と html_entity_decode を使用して結果セットをデコードしようとしましたが、フォームに入力すると html エンティティが表示されます。また、html をデコードした後に UTF8 エンコードを使用しようとしましたが、結果はさらに悪くなり、奇妙な文字や htmlentities が表示されます。

誰も私を助ける考えがありますか?

4

2 に答える 2

4

エスケープを無効にしてみてください。要素で直接行うことができます。

$element->setAttrib("escape", false);

いくつかのフィルターが必要な場合は、エンコードを構成する必要があります。コメントに記載されている例を次に示します。

$enc = array('quotestyle' => ENT_QUOTES, 'charset' => 'UTF-8');
$filter = new Zend_Filter_HtmlEntities($enc));
$element->addFilter($filter);

StringToLower のようなフィルターは、「setEncoding();」というメソッドを実装しています。

于 2011-05-03T16:09:44.700 に答える
0

「サニタイズされた」HTML エンティティを保持する必要がない場合は、代わりに StripTags フィルターを使用してください。StripTags は HTML および PHP タグを削除し、HtmlEntities はそれらをエンコードします。

これを試して:

$filter = new Zend_Filter_StripTags();

それ以外の:

$filter = new Zend_Filter_HtmlEntities()
于 2011-12-02T20:53:06.483 に答える