0

我遇到了一个问题,我设法通过简单地尝试不同的选项来解决这个问题,但我不明白为什么它会起作用,这对我来说没有意义......

就是这样,我从 Facebook 接收 UTF8 编码的 JSON,我的表在 utf8_general_ci 中,我的数据库连接也是 UTF8 编码的。

如果我不做任何特别的事情,则将字符串插入为

法比安

但是如果我在插入之前将其 utf8_decode 它插入为

法比安

当我在我的字符串上调用 mb_detect_encoding 时,它返回 UTF8。

谁能解释为什么我必须使用 utf8_decode 才能工作?或者更好的是,如何修复我的代码,这样我就不必调用 utf8_decode?

提前致谢。

4

2 回答 2

1

如果您的数据库/表/字段是utf8_general_ci并且字符串是UTF-8,则在插入之前不应转换字符串。

您应该从数据库中进行选择,在以 HTML 打印之前,您应该使用以下代码将 UTF-8 转换为 Latin1 (iso-8859-1):

 mb_convert_encoding($selected_string, 'utf-8', 'iso-8859-1')
于 2017-10-11T14:11:21.997 回答
0

发现问题,在使用 PDO 建立与 DB 的连接后,您必须执行命令“SET NAMES utf8”。我正在使用旧版本的 PHP (5.3.6),并且 charset=utf8 在连接字符串中被忽略...

看到这个问题:PHP PDO: charset, set names?

于 2012-09-18T21:28:38.563 回答