【问题标题】:CodeIgniter config charset and UTF-8 supportCodeIgniter 配置字符集和 UTF-8 支持
【发布时间】:2012-08-22 21:20:27
【问题描述】:

我正在开发一个在数据库中使用/存储重音字符的网站。我设置了页面模板,以便 config.php 字符集变量与设置匹配,例如:

<meta charset="<?php echo $this->config->item('charset');?>">

我遇到的问题是,当 $config['charset'] 设置为 UTF-8 时,表单验证失败,如果包含重音字符,就好像没有提交任何字符。因此,例如,如果 á 包含在字符串中的任何位置,必填字段将反弹。减去 á 的字符串可以正常工作。

我已经设法通过将$config['charset'] 更改为 ISO-8859-1 并将文本转换为 UTF-8,然后再使用 php 的 utf8_encode() 从数据库中检索 / 来实现这一点和utf8_decode()。这是最好的方法还是我错过了在 CodeIgniter 中工作以获取带有重音字符的 UTF-8 所需的东西?

任何建议表示赞赏。

【问题讨论】:

标签: php mysql codeigniter character-encoding


【解决方案1】:

您必须确保在任何地方都使用 UTF-8,并且 PHP 和 MySQL 都配置为处理 UTF-8。

在 html 中,添加元标记:

<meta charset="utf-8" />

并将其保存为 UTF-8 格式。这里是how to do that in notepad++

定义 MySQL 表以支持 UTF-8,创建表:

DEFAULT CHARSET=utf8;

并将连接设置为:

mysql_set_charset('utf8', $con);

Enable UTF-8 中的php.ini

default_charset = "utf-8"

完整的手动检查Handling Unicode Front To Back In A Web App

【讨论】:

  • 非常感谢您的回答和链接 - 我会检查以确保始终使用 UTF-8。表单验证问题是由 $config['charset'] 设置设置为“UTF-8”(全部大写)而不是“utf-8”(全部小写)引起的。由于某种原因,大写“UTF-8”的默认设置不起作用(至少在我的设置中不起作用)。
  • 对在 google 上找到它的人的小评论 - 此问题的替代来源可能是表 或列 的编码(是的,更改表的编码不会改变单个列的编码) - 在这种情况下,在具有 UTF-8 字符串的列中编辑值将导致“不正确的字符串值”警告,当您简单地通过 codeigniter 运行查询时,这是不可见的。您将看到的是 ? 而不是UTF-8 字符。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
相关资源
最近更新 更多