首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在Zend应用程序中将字符集设置为UTF-8?

如何在Zend应用程序中将字符集设置为UTF-8?
EN

Stack Overflow用户
提问于 2011-06-08 08:31:28
回答 9查看 29.2K关注 0票数 6

我正在开发Zend应用程序。我的数据库中的数据用"utf8_unicode_ci“编码。我在我的application.ini中声明:

代码语言:javascript
运行
复制
resources.view.encoding = "UTF-8"

但是每当我试图检索包含特殊字符的字符串时,比如

{'é‘、'à’、'è‘、.}在db中,除非我使用函数:utf8_decode(),否则字符串不会显示

因此,我尝试将字符集设置为UTF-8:

自举:

代码语言:javascript
运行
复制
protected function _initDoctype() {
      $this->bootstrap('view');
      $view = $this->getResource('view');
      $view->doctype('XHTML_STRICT');
      $view->setEncoding('UTF-8');
 }

 protected function _initFrontControllerOutput() {

    $this->bootstrap('FrontController');
    $frontController = $this->getResource('FrontController');

    $response = new Zend_Controller_Response_Http;
    $response->setHeader('Content-Type', 'text/html; charset=UTF-8', true);
    $frontController->setResponse($response);

    $frontController->setParam('useDefaultControllerAlways', false);

    return $frontController;
}

布局:

代码语言:javascript
运行
复制
$this->headMeta()->appendHttpEquiv('Content-Type', 'text/html;charset=utf8');
echo $this->headMeta();

application.ini:

代码语言:javascript
运行
复制
resources.view.encoding = "UTF-8"
resources.db.params.charset = "utf8"

编辑:现在我可以在页面中显示特殊字符,但是当我从数据库中检索元素时,就不会显示特殊字符。

  • 转义字符串返回null ($this->escape($string))
  • echo $string?代替特殊的字符

因此,我仍然需要使用utf8_decode()来显示它们。有什么建议吗?

谢谢你的帮助!!

EN

Stack Overflow用户

发布于 2019-06-07 10:02:36

正如其他人所说,我们必须设置编码,在我的Zend框架中,我不得不以一种几乎不同的方式来实现它:

  1. 在db.ini文件中:

字符集= "utf8"

代码语言:javascript
运行
复制
adapter = PDO_MYSQL
dbname = skydevel_skydevfinal
username = root
password = 
hostname = localhost
sprofiler = false
charset = "utf8"

在声明数据库、用户名等的下面添加这一行。

2.现在在bootstrap.php文件中指向对新行的引用:

'charset'=>$dbConfig->charset

代码语言:javascript
运行
复制
end_Db::factory($dbConfig->adapter, array('host' => $dbConfig->host,
                'username' => $dbConfig->username,
                'password' => $dbConfig->password,
                'dbname' => $dbConfig->dbname,
                'charset'=>$dbConfig->charset
  1. 您必须将数据库和表设置为UTF-8,下面是我所做的工作:ALTER DATABASE skydevel_skydevfinal CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; ALTER TABLE ch_news_comments CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
票数 1
EN
查看全部 9 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6276150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档