私はtextarea
このように定義されたものを入力しようとしています
$this->addElement('textarea', 'body', array(
'label' => $translate->translate('Contents:'),
'cols' => '80',
'rows' => '24',
'required' => true
));
データベース レコードから。レコードは、UTF-8 のページの HTML テキストを含む BLOB です。
$form->populate(array(
// ...
'body' =>
str_replace("\\n", "\n",
html_entity_decode(
$page['body']
)
),
// ...
));
残念ながら、テキストの長さが 2934 バイトを超える場合、フィールドはまったく入力されません。maxlength
発行して設定してみました
'maxlength' => '4096',
しかし、効果がないようです。
現在、Web で見つけたものから、textarea
制限は 2934 バイトより大きく、30 ~ 60 KB に近いはずです。フィールドを 2 つの個別のフォーム要素に分割する以外に、この問題を解決するにはどうすればよいでしょうか?
更新 犯人は文字 "ß" だったようです。これは、データベースで 2 つの文字 "Ã�" としてエンコードされています。その文字が最初に出現するのはテキスト内の 2934 の位置であるため、2 バイト表現の 2 番目の文字は、テキストを完全に受信することから何らかの形でフィールドを壊します。