【csv-parse】使用parse方法的时候来转换为csv字符串时,会导致输出有乱码

news2025/1/17 13:53:06

在这里插入图片描述

😁 作者简介:一名大四的学生,致力学习前端开发技术
⭐️个人主页:夜宵饽饽的主页
❔ 系列专栏:前端bug记录
👐学习格言:成功不是终点,失败也并非末日,最重要的是继续前进的勇气

​🔥​前言:

这是在使用框架csv-parse的时候,出现的一些字符转换问题的记录,希望可以帮助到大家,欢迎大家的补充和纠正

文章目录

  • csv-parse框架
    • 1、使用parse方法的时候来转换为csv字符串时,会导致输出的对象第一个属性会有乱码
      • 问题复现:
      • 解决问题

csv-parse框架

1、使用parse方法的时候来转换为csv字符串时,会导致输出的对象第一个属性会有乱码

问题复现:

问题概念:id字段中会有一个乱码,无法通过record["id"]来获取该属性的属性值
问题代码:

const input = fs.readFileSync(csvFilePath, { encoding: 'utf8' })
console.log(typeof input)

//设置bom为ture的原因是因为csv文件的慢一些数据开头会有bom通,导致第一列数据是乱码的
const records=parse(input,{delimiter: ',',skip_empty_lines:true,columns:true,trim:true})
console.log(records)

问题结果:
image.png

解决问题

原因:是因为某些字段中有BOM头的存在,导致转换为utf-8编码格式d读取文件信息出现乱码

🤖:BOM(Byte Order Mark)头是指在某些Unicode编码格式的文件中,特别是在UTF-8、UTF-16和UTF-32中,用于标识文件编码类型的特殊字符序列。BOM字符不是一个实际的可打印字符,而是由特定的字节序列组成,这些字节序列的存在表明文件是用Unicode编码的,并且可以指示字节顺序(对于那些使用字节顺序的编码,如UTF-16和UTF-32)。
在UTF-8中,BOM头由字节序列 \xEF\xBB\xBF 组成,虽然它不是必须的,因为UTF-8的字节顺序是固定的,但有时会被添加到文件的开头以标识文件的编码。然而,一些程序(如某些文本编辑器和编程语言)可能无法正确处理带有UTF-8 BOM头的文件,尤其是在预期没有BOM的情况下。
在UTF-16和UTF-32中,BOM头用于确定字节顺序,因为这些编码方式中字节的顺序可以有两种:小端序(little-endian)和大端序(big-endian)。例如,UTF-16的小端序BOM是\xFF\xFE,大端序BOM是\xFE\xFF。
需要注意的是,虽然BOM在某些情况下有助于识别文件编码,但它也可以引起问题,尤其是当软件不期望或不支持BOM时。在某些编程场景下,为了避免兼容性问题,通常建议不使用BOM。

解决的方法:
使用csv框架的bom选项来处理

//设置bom为ture的原因是因为csv文件的慢一些数据开头会有bom通,导致第一列数据是乱码的
const records=parse(input,{bom:true,delimiter: ',',skip_empty_lines:true,columns:true,trim:true})

输出:
image.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1674686.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

网安面经之文件上传漏洞

一、文件上传漏洞 1、文件上传漏洞的原理?危害?修复? 原理:⽂件上传漏洞是发⽣在有上传功能的应⽤中,如果应⽤程序对⽤户上传的⽂件没有控制或者存在缺陷,攻击者可以利⽤应⽤上传功能存在的缺陷&#xff…

深度学习之激活函数——Tanh

Tanh 双曲正切1函数(tanh),其图像与sigmoid函数十分相近,相当于sigmoid函数的放大版。在实际的使用中,tanh函数要优先于sigmoid函数。 函数表达式 t a n h e x − e − x e x e − x tanh\frac{e^x-e^{-x}}{e^xe^{-x}} tanhexe−xex−e−…

高中数学:平面向量-基本概念

一、定义 有方向,且有大小的量,就叫向量 与之对应的是,数量,只有大小,没有方向 例如 A B → \mathop{AB}\limits ^{\rightarrow} AB→ a → \mathop{a}\limits ^{\rightarrow} a→ 二、相关性质 相等 大小相同…

半监督的GCN:Semi-Supervised Classification With Graph Convolutional Networks

Semi-Supervised Classification With Graph Convolutional Networks -Theophilus Siameh-2017(2023) 思路 使用可扩展方法对图进行半监督学习,其中CNN应用在图数据上,得到GCN。 这种方法是在图的边的数量上进行线性的缩放模型,并学习包含局部图结构和图节点的几个隐藏层…

Django图书馆综合项目-学习(2)

接下来我们来实现一下图书管理系统的一些相关功能 1.在书籍的book_index.html中有一个"查看所有书毂"的超链接按钮,点击进入书籍列表book_list.html页面. 这边我们使用之前创建的命名空间去创建超连接 这里的book 是在根路由创建的namespacelist是在bo…

【离散数学】偏序关系中盖住关系的求取及格论中有补格的判定(c语言实现)

实验要求 求n的因子函数 我们将n的因子存入数组中&#xff0c;n的因子就是可以整除n的数&#xff0c;所以我们通过一个for循环来求。返回因子个数。 //求n的因子,返回因子个数 int factors(int arr[], int n) {int j 0;for (int i 1; i < n; i){if (n % i 0){arr[j] i…

如何创建和运营新版Facebook粉丝专页

在众多平台中&#xff0c;Facebook粉丝专页无疑是连接全球消费者、扩展品牌影响力的重要工具。如果你是初次接触Facebook粉丝专页&#xff0c;可能会感到有些迷茫——毕竟&#xff0c;只是听说过它的好处&#xff0c;却不知道如何开始。 Facebook粉丝专页不仅是一个分享产品信…

ICode国际青少年编程竞赛- Python-5级训练场-函数练习2

ICode国际青少年编程竞赛- Python-5级训练场-函数练习2 1、 def get_item(a):Spaceship.step(1)Dev.step(a)Dev.turnLeft()Dev.step(1)Spaceship.step(1)Dev.turnRight()Dev.step(-a)Spaceship.step(1) get_item(3) get_item(2) get_item(3) get_item(1) get_item(5)2、 de…

【4】STM32·FreeRTOS·中断管理

目录 一、什么是中断 二、中断优先级分组设置 2.1、中断优先级基本概念 2.2、中断优先级分组 2.3、FreeRTOS中断特点 三、中断相关寄存器 3.1、系统中断优先级配置寄存器 3.2、PendSV和Systick中断优先级的配置 3.3、中断屏蔽寄存器 四、FreeRTOS中断管理实验 一、什…

618购物攻略:哪些好物值得你入手?精选必买数码产品推荐!

随着618大促的脚步渐近&#xff0c;购物的热情已然在大家心中熊熊燃烧&#xff0c;不少人已跃跃欲试&#xff0c;准备在这场购物盛宴中大放异彩。然而&#xff0c;面对琳琅满目的商品&#xff0c;你是否也感到有些无从下手&#xff0c;犹豫该把哪些好物收入囊中&#xff1f;别急…

Python 开发 框架安全:SSTI 模板注入漏洞测试.

什么是 SSTI 模板注入 SSTI (Server-Side Template Injection) 是一种Web应用程序安全漏洞&#xff0c;它发生在应用程序使用模板引擎渲染用户输入时。当应用程序将用户输入直接插入到模板中而不进行充分的过滤和验证时&#xff0c;就可能导致SSTI漏洞。攻击者可以利用这个漏洞…

Threejs 学习笔记 | 灯光与阴影

文章目录 Threejs 学习笔记 | 灯光与阴影如何让灯光照射在物体上有阴影LightShadow - 阴影类的基类平行光的shadow计算投影属性 - DirectionalLightShadow类平行光的投射相机 聚光灯的shadow计算投影属性- SpotLightShadow类聚光灯的投射相机 平行光 DirectionalLight聚光灯 Sp…

高校普法|基于SSM+vue的高校普法系统的设计与实现(源码+数据库+文档)

高校普法系统 目录 基于SSM&#xff0b;vue的高校普法系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3律师功能模块 4学生功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获…

Linux进程控制——Linux进程等待

前言&#xff1a;接着前面进程终止&#xff0c;话不多说我们进入Linux进程等待的学习&#xff0c;如果你还不了解进程终止建议先了解&#xff1a; Linux进程终止 本篇主要内容&#xff1a; 什么是进程等待 为什么要进行进程等待 如何进程等待 进程等待 1. 进程等待的概念2. 进…

“等保测评实施策略:保障企业信息安全合规“

等保测评&#xff0c;即网络安全等级保护测评&#xff0c;是企业保障信息安全合规的重要实施策略。以下是企业实施等保测评的一些关键策略&#xff1a; 理解等保测评的重要性&#xff1a; 等保测评有助于企业识别和评价信息系统的安全性能&#xff0c;提供改进建议&#xff0c;…

user32.dll怎么修复?几种修复user32.dll丢失的详细步骤

user32.dll怎么修复&#xff1f;几种修复user32.dll丢失的详细步骤user32.dll是Windows操作系统中的一个核心动态链接库文件&#xff0c;它主要负责处理图形用户界面&#xff08;GUI&#xff09;相关的功能。这个文件是Windows API&#xff08;应用程序编程接口&#xff09;的一…

css超出部分省略(单行、多行,多种方法实现)

HTML <p class"text">这是一行测试数据,这是一行测试数据,这是二行测试数据,这是一行测试数据,这是三行测试数据,这是四行测试数据</p>1.单行 .text{width: 200px;border: 1px solid #000000;white-space: nowrap; /* 控制元素不换行 */overflow: hi…

骨传导耳机哪个品牌值得入手?盘点5款高人气热门机型推荐!

随着人们对健康生活方式的追求和户外运动的普及&#xff0c;骨传导耳机的需求也日益增长。然而&#xff0c;随着骨传导耳机的热度增加&#xff0c;市场上也开始出现一些低质量的骨传导耳机产品&#xff0c;这些劣质耳机在音质、佩戴舒适度或安全性上存在各种不足&#xff0c;甚…

Matlab如何批量导出多张高质量论文插图?科研效率UpUp第9期

上一期文章中&#xff0c;分享了Matlab导出高质量论文插图的方法&#xff08;Matlab如何导出高质量论文插图&#xff1f;科研效率UpUp第8期&#xff09;。 进一步&#xff0c;假如我们想要批量导出多张高质量无变形论文插图&#xff0c;该如何操作呢&#xff1f; ​也很简单&…

【MySQL01】【 Explain 命令详解】

文章目录 一、前言二、Explain 概览三、Explain 详解1. id2. select_type3. table4. type5. possible_keys6. key7. key_len8. ref9. rows10. filtered11. extra 列 四、补充1. EXPLAIN 扩展1.1 Extend EXPLAIN1.2 JSON 格式的执行计划 2. Intersection、Union、Sort-Union 索引…