通过 json_encode 传递日语字符(UTF-8)的问题

2024-03-28

我在通过 json_encode 将日语字符从 PHP 传输到 JavaScript 时遇到问题。

这是从 csv 文件读取的原始数据。

PRODUCT1,QA,テスト
PRODUCT2,QA,aテスト
PRODUCT3,QA,1テスト

问题是,当通过 echo json_encode($return_value) 传递这些数据时,其中 $return_value 是包含上述数据的二维数组,日语单词“テsuto”被删除并在 ajax 响应端显示为空字符串。但是,如果我在日语单词的开头放置任何字母/数字字符,例如“aテsuto”或“1テsuto”,它们是上面示例的第二行和第三行,那么这些单词就可以顺利通过。

下面是 ajax 响应端数据的样子。正如您所看到的,第一个块的第三个元素是空的。如果我从上述原始数据的其他单词中删除“a”或“1”,这些字符在响应端也会变为空。到目前为止我测试过的任何类型的日语字符都会发生这种情况。

[["PRODUCT1","QA",""],["PRODUCT2","QA","a\u30c6\u30b9\u30c8"],["PRODUCT3","QA","1\u30c6\u30b9\u30c8"]]

有谁知道为什么会发生这种情况以及我如何克服这个问题?

这是双方代码的一部分。

 PHP:
 function getFileContents($dirName,$filename){

    $return_value = array();
    $my_file= fopen($dirName . $filename, "r");

    $row = 0;
    while (($data = fgetcsv($my_file, 1000, ",")) !== FALSE) {
        $num = count($data);
         for ($c=0; $c < $num; $c++) {
            #csv file is written in euc-jp so convert to utf-8 here.
            $return_value[$row][$c] = mb_convert_encoding($data[$c], "UTF-8", "EUC-JP");
         }
         $row++;
    } 
    fclose($my_file);

    echo json_encode($return_value);
  }

  JavaScript:
  $.ajax({
     type: "POST",
     url: "data.php",
     data: { 
        "dirName" : "./data/",
        "filename" : filename
     },
     dataType :"json",
     success : function(response){
          // more code
          // At this point, Japanese characters are already empty strings.
    } 
  });

非常感谢您提前的帮助!


我发现问题是 PHP fgetcsv() 函数无法识别 EUC-JP 中的字符。显然,fgetcsv() 使用系统区域设置对字符编码进行假设 http://www.php.net/manual/en/function.fgetcsv.php#62759。我在执行 fgetcsv() 之前添加了以下行,如引用的示例所示(但以相反的方式),它解决了问题!

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

通过 json_encode 传递日语字符(UTF-8)的问题 的相关文章

  • 向 yii2 活动记录模型添加不在数据库中的属性

    我有一个 mySQL 数据库 其中有一个表videos和两列 开始时间 and end time 其格式为2017 01 24 15 38 11 我有一个活动记录模型Videos延伸 yii db ActiveRecord我想添加一些数据库
  • PHP上传图片

    好吧 我在这方面投入了很多时间 我是 PHP 编程新手 并试图掌握基础知识 但我有点迷失 因为昨晚我能够获得一个 PHP 表单来将基本数据 如名称地址和其他内容 上传到我的 MySQL 服务器 但今天我说让我们进行下一步 将图像发送到服务器
  • 优化 Web 应用程序开发策略

    如今 许多网络应用程序正在使用它们自己无法使用的 API 或代码 并且通常使用效率低下 我想到了一些谷歌地图混搭 对于 php asp 后端 HTML javascript 尤其是现在所有的 AJAX 存在许多潜在的瓶颈 问题 低效率和双重
  • 通过标签收集自定义帖子类型

    我使用以下代码设置了名为 扇区 的自定义帖子类型 register post type sectors array labels gt array name gt Sectors singular name gt sectors has a
  • 一起使用similar_text和strpos

    我想创建一个简单的搜索引擎 在用户输入中查找关键字 我知道我可以使用 strpos 来检查字符串中是否存在单词 但是 我希望用户能够拼写错误的单词 例如 userInput What year did George Washingtin b
  • PHP mcrypt_decrypt - 我可以确定数据是否使用正确的密钥解密?

    我正在编写一个 php 脚本 并使用 mcrypt 来加密 解密任意数据 当我使用另一个密钥解密加密数据时 例如 我输入了错误的密码 输出当然不会被正确解密 如果使用了错误的密钥 我想显示一条错误消息 但我认为很难将输出字符串验证为正确的
  • 当列表只有一个元素时,CXF 返回对象而不是 js 数组

    我正在使用 CXF 来创建宁静的服务 其中一项服务返回一个字符串列表 当列表中有多个项目时 CXF 返回一个字符串数组 但当我只有一个元素时 它返回字符串而不是带有 json 的数组 对于一件物品 ImageResponse images
  • 无法加载请求的类:会话

    我的配置文件看起来像这样 gt config sess cookie name ci session config sess expiration 7200 config sess expire on close TRUE config s
  • 检索多行最后插入的 id

    当将数据插入具有自动递增 PK 的表时 我需要获取该密钥以在另一个语句中使用 正如许多问题所示 这可以在 PHP 中使用mysql insert id 但是 我一直将插入内容分组在一起 因此一次插入不止一行 我这样做是因为我猜测可能会存在一
  • 在 PHP 中用星号 (*) 提示或部分隐藏电子邮件地址

    我有这个邮件地址 email protected cdn cgi l email protection 如何将其转换为该邮件地址a email protected cdn cgi l email protection 我尝试使用strpos
  • 在 PHP 5.3.8 中禁用严格标准

    我在 PHP 中使用严格的标准选项 但我想禁用它 因为 Joomla 不喜欢它 并且我必须在本地主机上使用 Joomla 在回答该网站的另一个问题时 给出了这个解决方案 E ALL E DEPRECATED E STRICT但这对我不起作用
  • mysql非空字段计数

    我想计算 mysql 中特定字段集有多少字段为空 我找到了一些示例 但它们都遍历整个表 基本上我有8个字段 listing photo 1 到listing photo 8 我想知道其中有多少个被填充 I tried result mysq
  • 使用 PHP 将数据添加到 json

    我使用 json decode 创建一个 json 对象 在浏览了一些元素之后 我想向其中添加子元素 我该怎么做呢 取决于您传递给的选项json decode http php net manual en function json dec
  • MySQL ORDER BY rand(),名称 ASC

    我想获取一个包含 1000 个用户的数据库并随机选择 20 个用户 ORDER BY rand LIMIT 20 然后按名称对结果集进行排序 我想出了以下查询not像我希望的那样工作 SELECT FROM users WHERE 1 OR
  • 用 org.Json 解析 Java 中的 JSON?

    我在这方面遇到了很多麻烦 我正在尝试进行更新 并且正在使用从 url 返回此内容的 api JSON downloadUrl URL fileName Name gameVersion Version name Name projectId
  • Ionic框架和php mysql

    我是 Ionic Apahce Cordova 的新手 我创建了一个简单的应用程序 它具有静态列表视图项 但我想从 MYSQL 表获取数据并将其替换到我的静态列表中 我用谷歌搜索了一下 有人在研究它 但我不知道应该把我的 php 文件放在哪
  • Laravel 工厂关联仅关联最后的数据。如何解决这个问题?

    我有两个模型需要在创建数据后关联 我已经问过了here https stackoverflow com questions 58742894 how to associate data from a different factory并得到
  • 如何处理 php 7 中的“gd-png: fatal libpng error: Read Error: truncated data”

    我使用 php 7 0 22 Ubuntu 17 04 当一些用户上传带有截断数据的 PNG 时 我使用 a imagecreatefrompng path 然后我崩溃了 Fatal error imagecreatefrompng gd
  • mysql_insert_id 带更新

    执行下面的查询后 我使用 PHP 函数mysql insert id 它总是给我0 UPDATE tbl training types SET fld serial serial no fld name training name fld
  • mysql连接3个表

    如何连接三个具有一个公共列 id 的mysql表 例如 从表1中选择a b 从表2中选择c d 从表3中选择e f 其中id x 谢谢 SELECT t1 a t1 b t2 c t2 d t3 e t3 f FROM table1 t1

随机推荐

  • 以编程方式旋转 UITextView

    有一个奇怪的问题 如果你创建一个UITextView创建后立即旋转它 某些线条或字符将不可见 尝试这个 myTextView font UIFont boldSystemFontOfSize 20 myTextView text Hello
  • MySQL 更新触发器 - 查找更改的列?

    我有一个有 120 列的表 我需要设置审计跟踪 如果发生更改 它将记录任何列 就像现在一样 我想我必须为每一列设置一个具有如下条件的触发器 IF NEW columnName OLD columnName THEN log the old
  • 使用正则表达式提取 r ngram

    卡尔 布罗曼的帖子 https kbroman wordpress com 2015 06 22 randomized hobbit 2 https kbroman wordpress com 2015 06 22 randomized h
  • Numpy 查找具有相同值的组的索引

    我有一个由 0 和 1 组成的 numpy 数组 y 1 1 1 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 我想计算 1 或 0 组的索引 因此 对于上面的示例 一组的结果应该类似于 result 0 2 8 9
  • 混合jpa继承策略-inheritanceType.JOINED与inheritanceType.SINGLE_TABLE

    我的类结构如下所示 我在这里实现了两个单独的策略 但根类的继承策略 即 InheritanceType JOINED 正在整个层次结构中使用 Entity Inheritance strategy InheritanceType JOINE
  • ORACLE 索引表上的插入性能

    为什么 Insert 语句在索引表上执行速度较慢 这实际上是同一类问题 为什么需要更多时间才能将所有杂货放在厨房的正确位置 而不是在逛完杂货店后把所有东西都留在袋子里 这是因为在存放杂货时 您希望将它们放在一个漂亮且众所周知的位置 以便以后
  • 使用 UMD 捆绑包捆绑 Angular 2 应用程序(不构建供应商捆绑包)

    我目前正在将我的 Angular 2 应用程序与 WebPack 捆绑在一起 我们仍在快速循环 因此我们不想增加构建和应用程序加载过程的延迟 而是希望包含很少变化的 Angular 2 UMD CDN 准备的捆绑包 例如
  • PySpark 输出文件数量

    我是 Spark 新手 我有一个简单的 pyspark 脚本 它读取 json 文件 将其展平并将其作为 parquet 压缩文件写入 S3 位置 读取和转换步骤运行得非常快 并使用 50 个执行器 我在 conf 中设置 但写入阶段耗时较
  • Devise::PasswordsController#create 中的 EOFError

    我在从 Ruby on Rails 应用程序发送邮件重置密码时遇到了问题 密码重置邮件过去可以使用 但现在不行了 密码重置是服务器发送的唯一电子邮件 一旦我提交了我想要获取密码的电子邮件 Rails 就会显示完整的跟踪信息 Devise P
  • 防止只读文本框在 Silverlight 中变灰

    在 Silverlight 中 如何制作文本框IsReadOnly True 不会变灰 我的应用程序的灰色效果看起来很糟糕 我想禁用它 或更改其外观 颜色 Silverlight 2 中有几个选项 最简单的是使用 TextBlock 因为它
  • NumPy:计算累积中位数

    我有大小 n 的样本 我想计算每个 i 1 sample i 在 numpy 例如 我计算了每个 i 的平均值 cummean np cumsum sample np arange 1 n 1 我可以在没有循环和理解的情况下对中位数做类似的
  • 即使没有上传输入文件,Laravel mimes 验证也总是被调用(未使用必需规则)

    我仅对文件输入字段使用单一验证规则 这就是哑剧规则 如果没有上传文件 我想跳过此规则 所以我没有使用 必需 规则 但即使没有上传文件 它也始终显示 mime 类型消息 我刚刚添加了测试所需的规则 当时它显示了所需的错误消息 仅当使用 aja
  • 从 Rails 中的单表继承获取子类的列表/数组?

    我有一大堆子类 它们通过 Rails 应用程序中的单表继承从父类继承 我想要一种方法来获取从主类继承的所有子类的数组 我尝试了在另一个 SO 答案中找到的以下单链接命令 但它只返回父类 ObjectSpace each object cla
  • 为什么

    我有一个简单的 html 页面 其中有一些样式 我不明白为什么要添加一些上边距 这是来源
  • 是否可以递归刷新 CQ5/AEM apache 调度程序中的目录?

    由于多租户情况下的特定项目 我有一个调度程序设置了相当深的统计文件级别 我希望找到一种能够递归刷新目录的方法 以模仿其他租户的更浅的统计文件级别 是否有调度程序刷新命令允许我显式删除内容目录 您可以通过向调度程序发送简单的 GET 请求来自
  • FileStream 似乎没有启用

    在我们的开发数据库之一上 我尝试启用 FileStream 我运行了下面的脚本 据说它从 0 禁用变为 2 启用 Use FileStreamTest GO EXEC sp configure filestream access level
  • 实体框架视频教程[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 是否有免费的视频教程深入讨论 EF 而不仅仅是基础知识 Thanks 下面的视频是我看过的关于实体框架
  • 为什么DATETIME可以减整数,但DATE类型不能减

    DATETIME INTEGER 和 DATE INTEGER 的关系是否一致 这执行得很好 DECLARE Yesterday DATETIME GETDATE SELECT Yesterday 1 就像这样 DECLARE Yester
  • 如何有效地检查同一个表中的两列是否是一对一映射?

    即使不同值计数相等 也并不一定意味着一对一的映射关系 SELECT COUNT DISTINCT Column A FROM MyTable SELECT COUNT DISTINCT Column B FROM MyTable A 列 1
  • 通过 json_encode 传递日语字符(UTF-8)的问题

    我在通过 json encode 将日语字符从 PHP 传输到 JavaScript 时遇到问题 这是从 csv 文件读取的原始数据 PRODUCT1 QA PRODUCT2 QA a PRODUCT3 QA 1 问题是 当通过 echo