Ajax jquery $.get() 请求更改字符编码并将 žČć 等字符显示为符号或问号

Ajax jquery $.get() request changes character encoding and displays characters like žČć as symbold or questionsmarks

提问人:farbenrausch 提问时间:10/23/2023 最后编辑:farbenrausch 更新时间:10/24/2023 访问量:23

问:

我在 php 中编写了一个 CRUD 应用程序,然后切换到 ajax 以从数据库中请求数据。

当我使用普通的 php 显示数据库中的数据时,我会得到所有字符以应有的方式显示,但是当我通过 ajax 获取数据时,我会得到符号。在我使用纯 php 显示数据的同一页面上,在使用 ajax 显示数据的同一页面上,我得到了 2 个不同版本的数据。

我在文件中设置了以下编码:

  • 函数 .js 文件中的 ajax 请求包含type: "GET", contentType: "application/x-www-form-urlencoded; charset=utf-8", dataType:"html"
  • 从中调用 AJAX 请求的 PHP 文件包含header('Content-Type: text/html; charset=UTF-8');
  • AJAX 请求调用的 PHP 文件包含header('Content-Type: text/html; charset=UTF-8');
  • 我的 HTML 文件是在 meta 中设置的<meta charset="utf-8">
  • 实际生成代码的行已设置:echo utf8_encode($this->data);
  • 数据库列类型为“utf8_general_ci”
  • MySQLI数据库连接是通过以下方式建立的 $connection = new mysqli("localhost","---","---", "--"); $connection->set_charset("utf8_general_ci");

它与浏览器或操作系统无关,我在具有不同操作系统的其他计算机上仔细检查了这一点。

如何在不扭曲编码的情况下通过 ajax 正确捕获数据?

php ajax utf-8 字符编码

评论

1赞 CBroe 10/23/2023
如果所有内容真的都是 UTF-8 格式,那么您还需要使用什么......?utf8_encode
0赞 CBroe 10/23/2023
从头到尾都通过 UTF-8 - 您一定在某个时候忘记了整个设置的一些细节。(现在,如果我必须猜测,我会说 - 可能是你的数据库连接?
0赞 farbenrausch 10/24/2023
我曾经utf8_encode确保在任何地方我都绝对坚持使用 utf8。数据库连接与设置字符集 utf8 连接,我在上面添加了它。
0赞 farbenrausch 10/24/2023
@CBroe 那没有帮助。请提供有用的答案。
0赞 CBroe 10/24/2023
“我曾经utf8_encode确保在任何地方我都绝对坚持使用utf8。- 你不能只是在“预防性”意义上应用它,如果你的数据已经用 UTF-8 编码,那么这将破坏它。

答: 暂无答案