4

在寻找解决方案数小时后,我放弃了。这是我的问题。我在 localhost 的数据库是utf8_general_ci,在我的 application.ini 中我写了

resources.db.params.charset = utf8

一切都很好并且工作正常。

但在网络服务器上,这些字符看起来像 ü 或 ö。我评论了 resources.db.params = utf8 进出。如果它出来了,那么到处的字符都很好,但不是任何形式(标签或值)。如果它在每个字符上都会出现这样的情况。同样的故事/没有效果

$form->setAttrib('accept-charset', 'UTF-8'); 

我也试过

resources.db.params.driver_options = "SET NAMES utf8". 

没有成功。

PHP版本本地主机:5.3.8 - MySql 5.0.8
PHP版本网络服务器:5.2.6 - MySql 5.0.51

4

2 回答 2

3

我不确定这是否是解决方案,但为了在 MySQL 中使用 UTF-8,我将 db 参数设置如下:

resources.db.params.charset = utf8

你试过这个吗?

[编辑]

您可能还想确保视图(以及表单)也使用正确的编码:

resources.view.encoding = "UTF-8"

或者,如果您在引导程序中手动实例化视图:

$view->setEncoding("UTF-8");

这应该使表单接受相同的编码,因为它使用视图的默认值。

于 2012-09-07T11:52:20.087 回答
0

如果您的数据库正确配置为使用 utf8_general_ci-collat​​ion,那么问题不在于数据库,而在于告诉浏览器如何正确解码来自服务器的 HTML 响应。

有两种方法可以告诉浏览器如何解码响应:

  1. Content-Type-header 中包含字符编码。然后它看起来像这样: Content-Type: text/html; charset=utf-8

    或类似地用于其他内容类型。

    Content-Type: application/json; charset=utf-8

  2. 在您的-tag中包含 a<meta charset="utf-8">作为第一个标签。<head>将此标签作为第一个标签之一很重要。至少在任何包含需要显示的文本的标签之前,例如<title>.

于 2012-09-07T11:55:10.953 回答