PHP - json_encode(string, JSON_UNESCAPED_UNICODE) 不转义捷克字符

2023-11-20

我从数据库中选择一些数据并将它们编码为 json,但我遇到了捷克符号的问题,例如

á、í、ř、č、ž...

我的文件采用utf-8编码,我的数据库也是utf-8编码,我也将标头设置为utf-8编码。请问我还应该做什么?

My code:

header('Content-Type: text/html; charset=utf-8');
while($tmprow = mysqli_fetch_array($result)) {
        $row['user'] = mb_convert_encoding($tmprow['user'], "UTF-8", "auto");
        $row['package'] = mb_convert_encoding($tmprow['package'], "UTF-8", "auto");
        $row['url'] = mb_convert_encoding($tmprow['url'], "UTF-8", "auto");
        $row['rating'] = mb_convert_encoding($tmprow['rating'], "UTF-8", "auto");

        array_push($response, $row);
    }

    $json = json_encode($response, JSON_UNESCAPED_UNICODE);

    if(!$json) {
        echo "error";
    }

以及打印的 json 的一部分:"package":"zv???tkanalouce"

EDIT:如果没有 mb_convert_encoding() 函数,则打印的字符串为空并打印“错误”。


使用示例中的代码,输出为:

json_encode($response, JSON_UNESCAPED_UNICODE);
"package":"zv???tkanalouce"

你看到那里的问号是因为它们是由mb_convert_encoding。当您使用编码检测时会发生这种情况(“auto“作为第三个参数)并且编码检测无法处理输入中的字符,将其替换为问号。示例代码行:

$row['url'] = mb_convert_encoding($tmprow['url'], "UTF-8", "auto");

这也意味着来自数据库的数据是notUTF-8编码是因为mb_convert_encoding($buffer, 'UTF-8', 'auto');不引入问号如果$buffer是UTF-8编码的。

因此,您需要找出数据库连接中使用的字符集,因为数据库驱动程序会将字符串转换为连接的编码。

最简单的是,您只需告诉每个数据库链接您正在请求 UTF-8 字符串,然后使用它们即可:

$mysqli = new mysqli("localhost", "my_user", "my_password", "test");

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

/* change character set to utf8 */
if (!$mysqli->set_charset("utf8")) {
    printf("Error loading character set utf8: %s\n", $mysqli->error);
} else {
    printf("Current character set: %s\n", $mysqli->character_set_name());
}

前面的代码示例仅展示了如何使用 mysqli 将默认客户端字符集设置为 UTF-8。它一直取自手册,另请参阅我们现场提供的相关材料,例如utf 8 - PHP 和 MySQLi UTF8.

然后你可以大大改进你的代码:

$response = $result->fetch_all(MYSQLI_ASSOC);

$json = json_encode($response, JSON_UNESCAPED_UNICODE);

if (FALSE === $json) {
    throw new LogicException(
        sprintf('Not json: %d - %s', json_last_error(), json_last_error_msg())
    );
}

header('Content-Type: application/json'); 
echo $json;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PHP - json_encode(string, JSON_UNESCAPED_UNICODE) 不转义捷克字符 的相关文章

  • octobercms 任务调度不起作用

    我正在使用基于 Laravel 的 OctoberCMS 我没有 SSH 访问我的服务器的权限 每天我需要删除一些注册后 24 小时内未激活帐户的用户 所以我正在考虑使用任务调度 如 cronjobs 根据 10 月 CMSdocs htt
  • phpspreadsheet setCellValue 未写入

    我正在上传一个 Excel 文件 读取内容并使用 phpspreadsheet 写入一个新的 Excel 文件 我正在尝试创建一个 Excel 文件 我正在使用以下代码写入单元格 writesheet gt setActiveSheetIn
  • PHP CSV VLookup

    我正在寻找一个 PHP 函数 它可以读取 CSV 文件并在第 1 列上执行 vlookup 以回显第 2 列中同一行的相关值 例如 如果 CSV 包含 Name Email John j email protected cdn cgi l
  • 如何使用 tqdm 实现 JSON 文件加载进度条?

    我正在编写一个用于 JSON 文件处理的 Python 脚本 它基本上分为三个过程 加载 编码和打印 虽然我已经使用 tqdm 轻松创建了用于编码和打印的进度条 但我不知道如何进行加载 我已经彻底阅读了 tqdm 文档 甚至在这里进行了搜索
  • 如何在 Codeigniter 中将变量从一个控制器传递到另一个控制器

    我刚刚开始学习 Code Igniter 我想知道如何将变量从一个控制器 first cont php 传递到另一个控制器 second cont php 任何帮助 将不胜感激 提前致谢 这将取决于具体情况 如果您想将数据保留一段时间 那么
  • AngularJS - 从数据中删除 \n

    捕获和格式化从服务器传递的文本内部以显示换行符的最佳方法是什么 小提琴在这里 http jsfiddle net nicktest2222 2vYBn http jsfiddle net nicktest2222 2vYBn scope d
  • 第一个选项为空的选择框

    如何将选择框中的第一个选项设置为空值 我正在从数据库获取数据 我想将选项默认设置为 请选择一个选项 我找到 default gt Please select 不适用于 HTML5 必需属性 这确实有效 listOfValues 1 gt C
  • Pinterest 身份验证 url 返回 404 错误?

    我正在测试 pinterest apihttp pinterest com developers api http pinterest com developers api 在上面的身份验证部分的网址上 它说我必须将用户重定向到 pinte
  • 如何从表中选择所有偶数 id?

    我想从 MySQL 数据库的表中选择所有甚至帖子 ID 然后显示它们 我还想获取所有带有奇怪 id 的帖子并将它们显示在其他地方 我想使用 PHP 来完成此操作 因为这是我使用的服务器端语言 或者 我是否必须选择所有帖子 然后使用 Java
  • PHP 继承以及静态方法和属性

    PHP 中的静态属性和方法不能被继承吗 一些例子会有所帮助 不 那不是真的 静态方法和属性 http www php net manual en language oop5 static php将会得到遗传 http www php net
  • Laravel + AngularJS Nginx 路由

    我有以下问题 我需要配置Nginx 这样在任何URL用户访问时 它都会保留uri 例如domain com some url 但仅传递给 laravel 并让 Angular 处理路由 Route get function return v
  • JavaPreparedStatementUTF-8字符问题

    我有一份准备好的声明 PreparedStatement st 在我的代码中 我尝试使用 st setString 方法 st setString 1 userName userName 的值为 ak a setString 方法将 ak
  • CodeIgniter 路由问题以访问前端和后端文件夹

    我正在使用 CodeIgniter 我在控制器和视图中有前端和后端文件夹 我尝试了服务器步骤甚至检查了几乎所有解决方案 但我仍然无法访问它我的默认控制器 路线 php route default controller frontend Us
  • 使用 jquery 和 php 测试表单输入是否为 1 或 2 位整数

    我有一个表单 其中有五个字段全部设置为 maxlength 2 基本上 我希望唯一可以输入的值是一位或两位整数 因为在将值存储在数据库中之前对这些字段执行计算 是否有任何 jquery 不允许用户输入不是整数的值 另外 用 jquery 和
  • 显示产品中的类别名称和类别 ID - Laravel

    我已经找到了这个答案 但它对我不起作用 Laravel 按 id 显示类别 https stackoverflow com questions 39222584 laravel displaying categories by id 我无法
  • 依赖注入容器什么时候会变得太大,我该怎么办?

    我们都知道为什么依赖注入很棒因为它使代码耦合更少 更容易测试 并且更容易阅读 然后有些人决定使用依赖注入容器 like pimple http pimple sensiolabs org PHP 可以协助依赖倒置 http en wikip
  • 使用 CouchDB 提供 HTML 服务

    我正在尝试将 CouchDB 与 HTML 独立 REST 架构一起使用 也就是说 除了 CouchDB 和 ajax 风格的 javascript 调用 CouchDB 之外 没有其他应用程序服务器 看起来交叉脚本是一个问题 我之前使用过
  • “完整性约束违规:1062 重复条目” - 但没有重复行

    我正在将应用程序从本机 mysqli 调用转换为 PDO 尝试将行插入具有外键约束的表时遇到错误 Note 这是一个简化的测试用例 不应复制 粘贴到生产环境中 InfoPHP 5 3 MySQL 5 4 首先 这是表格 CREATE TAB
  • ThreeJS无法加载Json文件

    首先 我已经读过这个问题 https stackoverflow com questions 17201888 three js exporter export object not working with jsonloader r58没
  • 如何使用 Mockery 在第 N 次调用模拟方法时抛出异常

    我需要测试我编写的某些代码多次调用另一个类上的方法时的行为 其中一次调用将导致抛出异常 我在用Mockery http docs mockery io模拟可能引发异常的类 因此 就我而言 该方法将被调用三次 我需要它在第二次抛出异常 这是我

随机推荐

  • Flask AttributeError:模块“app”没有属性“run”

    我的 Flask 项目的结构如下 my project app init py api static templates config py run py 应用程序 init py from flask import Flask app F
  • 获取每个 tr 的 td 值 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我有以下风格的代码 tr td value Feb 23 2008 td td value Feb 25 2008 td td td tr
  • “导入错误:无法导入名称多数组”

    新程序员来了 我正在尝试在 Windows 命令提示符中运行脚本 但在导入 numpy 包时遇到问题 并且我不知道出了什么问题 如何修复它 当我在 iPython 中运行该脚本时 它运行得很好 但是 当我在命令提示符中运行它时 我得到以下信
  • 在 iPhone 中根据触摸拖动旋转图像

    我想根据用户触摸拖动的速度顺时针或逆时针方向旋转图像 我认为这可以通过一些数学和逻辑来完成 这个的代码示例是什么样的 如果您的目标是 iOS 3 2 或更高版本 则可以使用UIRotationGestureRecognizer 代码看起来像
  • 替换 DataGridView 中的 DateTime.MinValue

    我正在开发一个姓名记录应用程序 该信息存储在 SQLite 数据库中 数据库中的所有列都是 TEXT 类型 出生日期列除外 它是 DATETIME 我转移到 SQLite 数据库的原始 Access 数据库允许出生日期为空 因此当我复制它时
  • .user.ini 文件适用于子目录吗?

    是否 user ini控制文件夹特定 PHP 设置的文件也下降到子文件夹中吗 我正在阅读一些网站 他们建议这样做 尽管没有很多关于它的信息 但是我发现如果我从子文件夹运行脚本 它不会使用来自 user ini file 我是否遗漏了某些内容
  • nodejs如何从stdin读取击键

    是否可以在运行的 Nodejs 脚本中侦听传入的击键 如果我使用process openStdin 并聆听其 data 事件 然后输入被缓冲 直到下一个换行符 如下所示 stdin test js var stdin process ope
  • python 的 sys.stdin.read() 会阻塞吗?

    我正在适应这个 Django 管理命令为了我自己的目的 该脚本是一个简单的 while 循环守护进程 它从 sys stdin 读取 第 152 行 在command handle 根据协议并将结果写入 sys stdout 我希望sys
  • 方向更改后 UIView addsubview:告诉视图调整大小

    我有一个 UIView 作为纵向模式下的 XIB 该视图以编程方式添加到视图控制器中 如下所示 NSArray nibObjects NSBundle mainBundle loadNibNamed InputView owner self
  • MATLAB parfor 切片问题?

    我有一段代码可以在一系列图像中找到哈里斯角点 我需要对 92 张图像执行此操作 但速度相当慢 因此 我想并行运行代码 我下面的代码有一个与变量 corners 相关的错误 Harris corners max pts 900 corners
  • Facebook SDK 3.1 - 验证访问令牌时出错

    我正在尝试将我的应用程序转换到新的 Facebook SDK 3 1 支持 iOS6 身份验证 我让它运行得很好 所以我决定从 FB 网站上的授权应用程序列表中删除该应用程序 以测试 iOS 是否会再次请求许可 现在我第一次打电话给 FBR
  • 带有空标记的 Java StringTokenizer

    我有一个看起来像 56 0 76 0 93 1230 的字符串 我使用 StringTokenizer 将其分割为 然而 这似乎是从 93 直接跳到 1230 有没有办法让它在移动到 1230 之前返回六个空字符串 Use String s
  • std::move 的未定义行为

    来自移动页面cppreference 的 除非另有说明 所有标准库对象都具有 被移出的状态被置于有效但未指定的状态 那是 仅限没有前提条件的函数 例如赋值 操作符 可以在对象被移动后安全地使用它 因此 从同一页面上的示例来看 下面的代码被认
  • 错误:Android Pre Dex:未指定 Android SDK

    我已经下载了gdx setup jar从网站上 我将其运行为 java jar gdx setup jar 我选择我想要的选项并为其生成项目idea libgdx 1 6 2 当我单击生成按钮时 该工具不会向我抛出任何错误 当我跑步时ide
  • Firestore获取根集合的所有文档和子集合

    假设我有这种结构 A collection a doc name Tim B collection b doc color blue where A and B are 收藏品 while a and b are 文件 有没有一种方法可以通
  • 如何在 Matplotlib 中以 3D 形式绘制热图颜色

    I am using Matplotlib 3D to plot 3 dimensions of my dataset like below 但现在我还想将第四维 即 0 到 20 之间的标量值 可视化为热图 所以基本上 我希望每个点都根据
  • App Engine Java 11 无法在实时服务器上找到或加载主类

    tl dr 为什么这在本地有效 但在部署到实时 App Engine 项目时却无效 我正在尝试使用 Java 11 版本的 App Engine 创建一个基于 servlet 的准系统 Web 应用程序 我正在将一些项目从 Java 8 更
  • 如何在 multiautocompletetextview 中使用空间标记器(如 gmail 到 android 中的字段)正确添加和删除联系人气泡

    i am struggling alot with adding the Bubbles to to field like in gmail or facebook messanger please look into this pictu
  • Android“您需要将 Theme.AppCompat 主题(或后代)与设计库一起使用”

    好的 我收到此错误 标题 很多帖子建议我 甚至Android studio 更改主题 更改为App Appcompat 我已经做到了 清单文件
  • PHP - json_encode(string, JSON_UNESCAPED_UNICODE) 不转义捷克字符

    我从数据库中选择一些数据并将它们编码为 json 但我遇到了捷克符号的问题 例如 我的文件采用utf 8编码 我的数据库也是utf 8编码 我也将标头设置为utf 8编码 请问我还应该做什么 My code header Content T