在我的php应用程序中,从一开始我用utf8设置所有内容以避免将来出现问题。我设置了我的数据库:
class DATABASE_CONFIG {
public $default = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '',
'database' => 'aquitex',
'prefix' => '',
'encoding' => 'utf8',
);
public $test = array(
'datasource' => 'Database/Mysql',
'persistent' => false,
'host' => 'localhost',
'login' => 'root',
'password' => '',
'database' => 'aquitex',
'prefix' => '',
'encoding' => 'utf8',
);
}
文件core.php:
Configure::write('App.encoding', 'UTF-8');
视图的默认布局:
<?php echo $this->Html->charset(); ?>
但是,我仍然在某些元素中遇到问题,例如表格标签。
在我的index.ctp文件中,这一行:
echo $this->Html->link("Segurança", array('controller' => 'Posts','action'=> 'add'), array( 'class' => 'button'));
完美无缺,'ç'字符没有问题。
但是在形式上,像这样:
echo $this->Form->create('Post');
echo $this->Form->input('Nome Produto');
echo $this->Form->input(utf8_encode("Código Produto"));
echo $this->Form->input("Versão");
echo $this->Form->input('Data');
//echo $this->Form->input('body', array('rows' => '3'));
echo $this->Form->end('Criar Ficha');
我无法用“ó”或“ç”字符正确显示表单标签上的文字。正如你所看到的,我甚至在其中一个中尝试过utf8encode()。
任何提示?谢谢!
答案 0 :(得分:1)
您无需在视图中使用utf8_encode()
。
你只是忘了正确保存视图文件。
保存为“utf8 without bom”,你会没事的。
不包含任何特殊utf8字符的文件仍然可以作为ansi保留(因为它们之间没有区别)。 但是每个包含这样一个字符的文件都需要保存为utf8(如果你打算在那里使用utf8字符来获取错误信息等,甚至是控制器和模型)。
PS:一般来说,使用英语并通过PO文件将其翻译成您的语言更为明智。 通过这种方式,您可以按原样保留文件,并且更灵活(您可以通过创建新的PO文件来动态添加新语言)。
修改强> 在一起搞清楚你的输入()使用utf8字符后,我需要更新:
对你的数据库字段(以及你的输入字段)使用“underscore_field_names”是明智的 - 并且用英语:
echo $this->Form->input("version"));
您可以随后通过PO文件轻松翻译它们或指定标签:
echo $this->Form->input("version", array('label' => 'Versão'));
但建议第一种方法让它保持干燥。
答案 1 :(得分:0)
App.encoding告诉Cake以UTF8发送数据。如果您使用的是MySQL,请确保数据库本身设置为utf8_general_ci collation。