位置: 编程技术 - 正文

使用Node.js处理前端代码文件的编码问题(node.js怎么用)

编辑:rootadmin

推荐整理分享使用Node.js处理前端代码文件的编码问题(node.js怎么用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:node.js的使用场景,node.js运行js,node.js deno,node.js deno,node.js使用教程,node.js怎么用,node.js使用教程,node.js deno,内容如对您有帮助,希望把文章链接给更多的朋友!

使用 NodeJS 编写前端工具时,操作得最多的是文本文件,因此也就涉及到了文件编码的处理问题。我们常用的文本编码有 UTF8 和 GBK 两种,并且 UTF8 文件还可能带有 BOM。在读取不同编码的文本文件时,需要将文件内容转换为 JS 使用的 UTF8 编码字符串后才能正常处理。

BOM 的移除BOM 用于标记一个文本文件使用 Unicode 编码,其本身是一个 Unicode 字符("uFEFF"),位于文本文件头部。在不同的 Unicode 编码下,BOM 字符对应的二进制字节如下:

因此,我们可以根据文本文件头几个字节等于啥来判断文件是否包含 BOM,以及使用哪种 Unicode 编码。但是,BOM 字符虽然起到了标记文件编码的作用,其本身却不属于文件内容的一部分,如果读取文本文件时不去掉 BOM,在某些使用场景下就会有问题。例如我们把几个 JS 文件合并成一个文件后,如果文件中间含有 BOM 字符,就会导致浏览器 JS 语法错误。因此,使用 NodeJS 读取文本文件时,一般需要去掉 BOM。例如,以下代码实现了识别和去除 UTF8 BOM 的功能。

GBK 转 UTF8NodeJS 支持在读取文本文件时,或者在 Buffer 转换为字符串时指定文本编码,但遗憾的是,GBK 编码不在NodeJS自身支持范围内。因此,一般我们借助 iconv-lite 这个三方包来转换编码。使用 NPM 下载该包后,我们可以按下边方式编写一个读取 GBK 文本文件的函数。

单字节编码有时候,我们无法预知需要读取的文件采用哪种编码,因此也就无法指定正确的编码。比如我们要处理的某些 CSS 文件中,有的用 GBK 编码,有的用 UTF8 编码。虽然可以一定程度可以根据文件的字节内容猜测出文本编码,但这里要介绍的是有些局限,但是要简单得多的一种技术。

首先我们知道,如果一个文本文件只包含英文字符,比如 Hello World,那无论用 GBK 编码或是 UTF8 编码读取这个文件都是没问题的。这是因为在这些编码下,ASCII0~ 范围内字符都使用相同的单字节编码。

反过来讲,即使一个文本文件中有中文等字符,如果我们需要处理的字符仅在 ASCII0~ 范围内,比如除了注释和字符串以外的JS代码,我们就可以统一使用单字节编码来读取文件,不用关心文件的实际编码是 GBK 还是 UTF8。以下示例说明了这种方法。

使用Node.js处理前端代码文件的编码问题(node.js怎么用)

1. GBK编码源文件内容:

2. 对应字节:

3. 使用单字节编码读取后得到的内容:

4. 替换内容:

5. 使用单字节编码保存后对应字节:

6. 使用 GBK 编码读取后得到内容:

这里的诀窍在于,不管大于 0xEF 的单个字节在单字节编码下被解析成什么乱码字符,使用同样的单字节编码保存这些乱码字符时,背后对应的字节保持不变。

NodeJS 中自带了一种 binary 编码可以用来实现这个方法,因此在下例中,我们使用这种编码来演示上例对应的代码该怎么写。

剖析Node.js异步编程中的回调与代码设计模式 NodeJS最大的卖点——事件机制和异步IO,对开发者并不是透明的。开发者需要按异步方式编写代码才用得上这个卖点,而这一点也遭到了一些NodeJS反对者

解析Node.js异常处理中domain模块的使用方法 NodeJS提供了domain模块,可以简化异步代码的异常处理。在介绍该模块之前,我们需要首先理解域的概念。简单的讲,一个域就是一个JS运行环境,在一个

nodejs修复ipa处理过的png图片 最近做项目遇到一个需求:解析apk和ipa包,然后把里面的icon上传到服务器。问题解析上传过程比较简单,我使用JSZip对apk和ipa进行解压,然后把找到里

标签: node.js怎么用

本文链接地址:https://www.jiuchutong.com/biancheng/370672.html 转载请保留说明!

上一篇:Node.js本地文件操作之文件拷贝与目录遍历的方法(node运行js文件)

下一篇:剖析Node.js异步编程中的回调与代码设计模式(nodejs 异步)

  • 无形资产摊销是当月还是下月
  • 出口销售收入要交增值税吗
  • 电子税务局怎么删除办税员
  • 金蝶销售订单和采购订单关联
  • 多缴的企业所得税办理退税怎么处理
  • 投资性房地产账面价值大于公允价值计入什么
  • 境外公司委托境内公司付款
  • 贸易类公司做产品代理账务如何处理
  • 小规模纳税人财务报表是按季还是按月申报
  • 以合并方式成立的新企业,新启用
  • 收到促销商品怎么做分录
  • 境外增值税代扣代缴
  • 境外保险是什么意思
  • 营改增后补缴营业税
  • 被辞退还有退休金吗
  • 企业支付的工伤费用怎么入账
  • 快递费开专票怎么入账
  • 发票章和税号不匹配
  • 汇算清缴补交的税怎么做凭证
  • 原始凭证的基本内容包括会计科目吗
  • 会计相关行业的工作职责和招聘要求
  • 制造费用包括劳动保护费吗
  • 有关于秋天的诗句
  • 偶然所得怎么缴纳个人所得税免税
  • PHP:xml_set_character_data_handler()的用法_XML解析器函数
  • 出差环境补贴怎么算
  • 融资租赁的租金是什么意思
  • 股权无偿赠与协议书范本
  • 单位管理费用核算
  • ErrorCaptureStackTrace(err); Error [ERR_MODULE_NOT_FOUND]: Cannot find module
  • 开机要按f1才能启动
  • 住房公积金领出来用了影响以后买房贷款吗
  • laravel视频教程
  • 未确认融资费用怎么算
  • 电子发票重开之前的是不是就没用了
  • 扩散模型和gan的区别
  • js写数组去重
  • 收到外币汇款怎么处理
  • 所得税申报资产总额
  • 公司帮非公司员工缴税
  • python深拷贝与浅拷贝区别
  • 知道实发工资怎么算应发工资计算器
  • 企业所得税怎么算
  • 利润表的编制方法和步骤累计数和好结账前余额
  • 公司废料收入如何开票
  • sql server single user
  • mysql怎么修改
  • 存货的采购成本不包括
  • 建筑服务预征缴纳税款期初余额怎么算
  • 存货跌价准备可以转回吗?
  • 全额事业单位和差额事业单位退休工资有什么区别
  • 房产契税什么时候退税
  • 客户赔偿款计入成本吗
  • 城市配套费的账务处理
  • 应收账款坏账准备借贷方向
  • 进口材料是什么意思
  • 弥补上年亏损的分录 所得税
  • 物流公司保险怎么买
  • mysql通过文档读取并执行命令之快速为mysql添加多用户和数据库技巧
  • deepin 2014系统下安装mysql数据库的方法步骤
  • WINDOWS操作系统最新版本
  • jucheck.exe
  • iphone中的照片如何导入mac
  • ubuntu virtual box
  • diskmakerx制作u盘需要多久
  • win10正式版版本
  • linux查看端口数据
  • linux 文件数量 命令
  • [置顶] 《翻身称霸》
  • Unity3D游戏开发引擎
  • 批处理修改文件后缀名
  • pycharm怎么学
  • js读取cookies
  • Python性能优化指南
  • python 判断字符串编码
  • 青岛市高新区是红岛吗
  • 上海增值税怎么报税流程
  • 消费税组成计税价格为什么要除以1-消费税率
  • 预付建造固定资产的工程价款
  • 江西鹰潭潭花酒60度
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设