【问题标题】:French encoded characters法语编码字符
【发布时间】:2013-11-18 11:45:00
【问题描述】:

编码不是我的强项...

我正在构建一个涉及多种不同语言的网站。

数据库正在以 UTF-8 存储内容。

使用 jQuery 和 AJAX 从数据库中将内容注入屏幕。问题是,响应没有正确编码。 Français 以 Français 的身份回归

我不知道我做错了什么,jquery中的默认请求是uft8,数据存储在uft-8的db中,html页面设置为<meta content="text/html; charset=utf-8" http-equiv="Content-Type">

我是否遗漏了一些明显的东西? 谢谢, 约翰

当我直接绕过 jquery ajax 请求内容时,响应被正确编码.. 就像浏览器没有设置标题一样......

【问题讨论】:

  • 数据库连接字符集是否设置为utf-8,例如SET NAMES utf8? AJAX 响应的内容类型标头是什么样的?您如何将响应注入页面?
  • 哇!非常感谢你,我不知道如何设置!:array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
  • 这个问题和答案实际上帮助了我。不知道为什么有人认为适合否决它。支持归零。

标签: php mysql jquery pdo character-encoding


【解决方案1】:

正如我在评论中提到的,您应该确保您的数据库连接字符集也是 utf-8。这是我的 goto PDO 构造函数,可以很好地设置......

$pdo = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'username', 'password', array(
    PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
    PDO::ATTR_EMULATE_PREPARES => false,
    PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC));

注意 charset 参数是 DSN 的一部分。除非您遇到低于 5.3.6 的 PHP 版本,否则无需运行 SET NAMES 查询。

【讨论】:

  • $this->db_con = new PDO("mysql:host=$db_hostname;dbname=$db_database", $db_username, $db_password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8" )); $this->db_con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); $this->db_con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-11
  • 1970-01-01
  • 1970-01-01
  • 2013-05-17
  • 2021-06-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多