当我的整个系统(页面和服务器)是法语并且具有ISO-8859-15编码时,我使用ZF2创建了一个表单。我没有权力改变这种编码,所以我想我们必须处理ANSI。
问题在于,在创建表单时,我使用这段代码:
public function createAction() {
BootstrapLogger::info(__METHOD__);
$this->layout( 'layout/xhtml' );
$dbAdapter = $this->getServiceLocator()->get('Zend\Db\Adapter\Adapter');;
$form = new ActionForm($dbAdapter);
$form->get('submit')->setValue('Créer');
}
并收到此错误:
Message:
String to be escaped was not valid UTF-8 or could not be converted: Crï¿œer
我真的不明白为什么,也不知道如何避免这种情况。
正如我猜测的那样,在创建表单时,标签也会被错误编码。
$this->add( array(
'name' => 'act_num',
'type' => 'Text',
'options' => array(
'label' => "N° action",
),
'attributes' => array(
'disabled' => 'disabled',
'class' => 'form-control'
)
));
//ch2 - Libellé de l'action
$this->add( array(
'name' => 'act_label',
'type' => 'Text',
'options' => array(
'label' => "Libellé de l'action",
),
'attributes' => array(
'required' => 'required',
'class' => 'form-control'
)
));
这会给我
Nᅵ action
Libellᅵ de l'action
与select的内容相同的问题(由SQLDb填充[在latin1_general_ci中]。)
知道如何解决这个问题吗?
非常感谢提前
答案 0 :(得分:0)
尝试为表单指定不同的编码。不确定如何使用InputFilter,因为几乎没有不同的方法,但是为每个字段添加它。
'validators' => [
[
'name' => 'StringLength',
'options' => [
'encoding' => 'UTF-8',
'min' => 1,
],
],
],