【问题标题】:Json encode - invalid utf-8 sequenceJson 编码 - 无效的 utf-8 序列
【发布时间】:2013-07-14 19:22:52
【问题描述】:

我一直在做的所有与数据库有关的事情都会向我抛出 json_encode(): invalid utf-8 sequence 警告。

之前是因为学说的使用,我无法处理,所以我开始在我的项目中做其他事情......但是现在我需要在一个地方使用 PDO 连接,并且问题又回来了。

即使有一些随机数据库配置(但 host = 'localhost')也会出现警告。


代码:

$dsn = 'mysql:dbname='.$form['dbname']->getData().';host='.$form['host']->getData();
$pdo = new \PDO($dsn, $form['username']->getData(), $form['password']->getData());

输入示例:

dbname = 'fdsfdsf'
username = 'fdsfdsf'
password = 'fsdfds'
host = 'localhost'

确切的错误:

ContextErrorException: Warning: json_encode(): Invalid UTF-8 sequence in argument in C:\xampp\htdocs\cc\app\cache\dev\classes.php line 4520

我已经尝试了什么?

  1. mysql_set_charset()
  2. 转义输入字符串
  3. @ 语法
  4. 为控制器文件设置 utf8 编码
  5. 为 mysql 表/数据库设置 utf8 通用编码

    $dsn = 'mysql:dbname='.htmlentities($form['dbname']->getData(), ENT_QUOTES, 'utf-8', FALSE).';host='.htmlentities($form['host']->getData(), ENT_QUOTES, 'utf-8', FALSE);
    $pdo = @new \PDO($dsn, htmlentities($form['username']->getData(), ENT_QUOTES, 'utf-8', FALSE), htmlentities($form['password']->getData(), ENT_QUOTES, 'utf-8', FALSE));
    mysql_set_charset('utf-8');
    

怎么了?

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    通常 mysql_set_charset 得到 'utf8' 而不是 'utf-8' 所以也许这就是问题所在。

    【讨论】:

    • 哦,感谢您指出这一点——但这并不能解决问题。
    • 你能发布你使用 json_encode 的确切代码和你发送给它的值吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-04
    • 1970-01-01
    • 1970-01-01
    • 2015-02-06
    • 2017-09-08
    • 2017-06-28
    • 1970-01-01
    相关资源
    最近更新 更多