将 JSON 导出为 CSV:关于 CSV 和 Unicode 的说明

将 json 导出为 csv:关于 csv 和 unicode 的说明

有多个JS库允许导出到excel。但是,如果我们想遵循极简主义方法来避免额外的依赖,该怎么办?

最简单的方法是从 JSON 生成 CSV,可以轻松在 Excel 中打开。

但是在展示转换逻辑之前,让我们先了解一下 CSV 是什么以及创建 CSV 文件时我们将使用哪种编码。

CSV 格式

此 RFC 4180 逗号分隔值 (CSV) 文件的通用格式和 MIME 类型指定了 CSV 格式的定义。请注意,这只是一个备忘录,因为 CSV 格式尚未正式标准化。

主要定义

每条记录位于单独的行上,由换行符 (CRLF) 分隔。文件中的最后一条记录可能有也可能没有结束换行符。标头应在整个文件中包含相同数量的字段。每个字段可以用双引号括起来,也可以不用双引号括起来。包含换行符(CRLF)、双引号和逗号的字段应该用双引号括起来。如果使用双引号括住字段,则字段内出现的双引号必须通过在其前面加上另一个双引号来转义。

编码

在我的 JSON 数据中,我有来自 ISO Latin-1 (ISO/IEC 8859-1) 字符集的字符 æ å ø,在创建 csv 文件时必须考虑这些字符。

需要考虑的 Unicode® 标准版本 15.0 的一些摘录。

Unicode 与 UTF-8/16/32

来自 Unicode® 标准版本 15.0:

Unicode 是书面字符和文本的通用字符编码标准,包含世界文字中的 149,186 个字符。Unicode 字符以三种编码形式之一表示:32 位形式 (UTF-32)、16 位形式 (UTF-16) 和 8 位形式 (UTF-8)。Unicode 联盟完全认可使用三种 Unicode 编码形式中的任何一种作为实现 Unicode 标准的一致方式。例如,重要的是不要陷入试图区分“UTF-8 与 Unicode”的陷阱。 UTF-8、UTF-16 和 UTF-32 都是实现 Unicode 标准编码字符的同等有效且一致的方式。

字节顺序标记 (BOM)

用于字节顺序标记的字符 U+FEFF (UTF-8 EF BB BF) 被命名为零宽度不间断空格。Unicode 纯文本的 UTF-16 和 UTF-32 编码形式对将数据写入文件时使用的字节顺序敏感。识别a开头的字节序列数据流可以视为数据流正在使用 UTF-8 编码方案的近乎确定的指示。

简而言之,在 CSV 字符串之前添加零宽度不间断空格将强制 Excel 应用 UTF-8 编码而不是 1252:西欧 (Windows) 或 Excel 将选择的其他编码,以防 U+FEFF 字符不是提供.

我将在本系列的下一篇文章中展示使用零宽度不间断空格生成 CSV 文件和不使用零宽度不间断空格的 CSV 文件之间的区别…

以上就是将 JSON 导出为 CSV:关于 CSV 和 Unicode 的说明的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2672485.html

(0)
上一篇 2025年3月7日 13:26:48
下一篇 2025年3月7日 13:26:55

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JavaScript 中的浅复制与深复制

    使用 javascript 时,了解浅复制和深复制之间的区别对于有效操作对象和数组至关重要。让我们深入研究这些术语的含义以及如何在代码中实现每种类型的副本。 浅复制浅拷贝创建一个新的对象或数组,其中包含与原始对象或数组相同的值。但是,如果原…

    2025年3月7日
    000
  • 释放 Convexdev 的潜力:彻底改变后端开发

    在不断发展的软件开发领域,创建强大且可扩展的后端系统始终是一个挑战。从管理数据库到处理实时更新,开发人员经常使用多种工具和框架来构建高效的后端。 Convex.dev 是一个旨在简化和增强后端开发的尖端平台。在本文中,我们将探讨 Conve…

    2025年3月7日
    200
  • 与软件复杂性的永无止境的战斗

    什么是复杂性? 最近读完了《软件设计哲学》,第二章探讨了软件复杂性的话题。  《软件设计哲学》一书实际定义了复杂性: “复杂性是指与软件系统的结构相关的任何使其难以理解和修改的事物。” 换句话说,复杂性可以有多种形式,并且不一定与性能有任何…

    2025年3月7日
    200
  • TypeScript ✔ vs JavaScript ❌:TypeScript 如何胜过 JavaScript

    javascript 多年来一直是 web 开发的基础。它使开发人员能够创建动态和交互式 web 应用程序(显然用于其他目的,但我们将专门讨论 web 开发)。然而,随着应用程序变得越来越复杂,javascript 的局限性变得更加明显。这…

    2025年3月7日
    200
  • Vanilla JS 效果方法

    过去,我经常使用 jquery,我喜欢 jquery 的一点是它通过简单且轻量级的语法提供了许多有用的方法。最常用的 jquery 方法之一是效果方法 – 用于为网站创建动画效果。 例如: 隐藏()/显示()切换()淡入()淡出…

    2025年3月7日
    200
  • 在学习 javascript 的同时编写一个测试函数

    物体无处不在 嗯,您之前可能听说过 javascript 中的对象以及它们对于理解该语言的重要性。 对象因其“key”:“value”模型而使 js 变得非常可读和有用。但我想强调的是,“值”部分不仅接受一个简单的字符串,还接受另一个对象,…

    2025年3月7日
    200
  • React 现代 Web 开发的游戏规则改变者

    介绍 react 是用于构建用户界面的流行 javascript 库,即将在其即将发布的版本 19 中实现巨大飞跃。随着 react 19 的发布,世界各地的开发人员都对新功能和改进感到兴奋,这些新功能和改进有望彻底改变我们构建 web 应…

    2025年3月7日
    200
  • 安全最佳实践

    确保全栈应用程序的安全对于保护用户数据、维护信任和遵守法规至关重要。在本指南中,我们探讨了保护您的应用程序的基本安全最佳实践和技术。 为什么安全很重要 安全漏洞可能会造成严重后果,包括数据盗窃、服务中断和声誉受损。采用强大的安全实践可以降低…

    2025年3月7日
    200
  • 从 Code Monkey 到 DX Champion – 您的一体化开发者体验平台

    在实际编码开始之前,每个开发人员都面临着耗时的设置阶段。作为具有计算机科学背景的开发人员传播者,我介绍了 DronaHQ 如何通过简化设置和改善整体开发人员体验来转变开发流程。 开发人员的困境:从设置到发布 每个开发人员都经历过这样的日子:…

    2025年3月7日
    200
  • npm run dev 报错

    我们在尝试启动 react 应用程序时经常遇到以下错误。 packit-frontend@0.0.0 devvitefile:///home/ariel/desktop/packit/packit-frontend/node_modules…

    2025年3月7日
    200

发表回复

登录后才能评论