向表单提交中文字符显示不正确 - 始终使用UTF8编码

时间:2011-11-17 17:51:54

标签: php cakephp encoding utf-8 cjk

我正在使用CakePHP。 我有:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />已在我的模板中设置。

Configure::write('App.encoding', 'UTF-8');已设置。

我的数据库正在使用utf-8编码,(在database.php - (encoding=>'utf8')中,如果我手动输入中文字符,则会正确存储;我可以毫无问题地输出它们。

此屏幕截图显示了输出:

http://i.stack.imgur.com/P04iz.jpg

当我手动将中文字符粘贴到我的MYSQL数据库(使用utf8_unicode_ci)时,结果为1。

4和5是当我从我的表格中发布汉字时发生的事情 - 无法理解的乱码。

表单编码为:

<form action="/controller/add" accept-charset="utf-8" id="ControllerAddForm" method="post">

所以它应该接受utf-8个字符。我可以输入;它们在文本框中显示正常,但无论我提交的内容都变得非常糟糕。

有什么想法吗?

3 个答案:

答案 0 :(得分:0)

您是否还在database.php中将数据库连接设置为UTF-8?

对于MySQL,那将是:

'encoding' => 'utf8' // no hyphen

答案 1 :(得分:0)

像Mark和Brian说的那样,检查POST标题中的 Accept-Encoding 参数和数据库字符集

答案 2 :(得分:0)

可能那些不是UTF-8兼容字符......

http://www.126.com/使用charset = gb2312

http://en.wikipedia.org/wiki/GB_2312