美文网首页
node判断文件编码格式

node判断文件编码格式

作者: 我叫Aliya但是被占用了 | 来源:发表于2019-02-19 10:25 被阅读0次

背景:用户导入一个txt文件,node把文件里的内容存数据库

node标准包里并没有判断文件编码格式的方法(判断buffer的也没有)。在网上搜索,看到有按文件buffer头几个值做判断的,亲测不可用(貌似只对文件开头是空格的文件管用)

哎,我笨啊,又着急,竟想出了一个个编码试,试到没乱码为止(闭嘴,我笨我不知道,还要你说)

let buffer = buffer.toString('utf8',0,buffer.length)
if (data.indexOf('�') >= 0 || data.indexOf('') >= 0) {
    console.info('文件格式:ascii')
    data = iconv.decode(buffer, 'GBK')
}
if (data.indexOf('�') >= 0 || data.indexOf('') >= 0) {
    console.info('文件格式:union')
    data = iconv.decode(buffer, 'utf16') 
}

虽然笨,但速度上并没有感觉慢(7.7M文件)

JsChardet:https://github.com/aadsm/jschardet/blob/master/README.md

看源码发现:(universaldetector.js P82-113)Bom类型的文件,其它类型的好像用了大量数据做对比,因为它的min.js里是这样的

jschardet.min.js

调用

var jschardet = require("jschardet")

// "àíàçã" in UTF-8
jschardet.detect("\xc3\xa0\xc3\xad\xc3\xa0\xc3\xa7\xc3\xa3")
// { encoding: "UTF-8", confidence: 0.9690625 }

// "次常用國字標準字體表" in Big5
jschardet.detect("\xa6\xb8\xb1\x60\xa5\xce\xb0\xea\xa6\x72\xbc\xd0\xb7\xc7\xa6\x72\xc5\xe9\xaa\xed")
// { encoding: "Big5", confidence: 0.99 }

相关文章

  • node判断文件编码格式

    背景:用户导入一个txt文件,node把文件里的内容存数据库 node标准包里并没有判断文件编码格式的方法(判断b...

  • 判断文件编码格式

    pip install chardet

  • iOS 判断文件编码格式

  • iOS判断.txt文档编码格式

    如果需要判断导入项目中的 .txt格式文件的编码格式(GBK/UTF-8......),主要适用于读取.txt文件...

  • csv 文件编码格式的判断

    1. 现状 后端接收到前端上传的文件 文件编码格式? 我 ??? 2. 可能接收的格式? 打开文件dakaiwen...

  • Python 判断文件的编码格式

    目的:获取文件的编码格式(在不知道文件来源的情况下,一般用notepad打开,看右下角,但是有些时候显示的结果不对...

  • 视频详解

    视频文件格式(简称:文件格式),视频封装格式(简称视频格式)视频编码格式(简称视频编码) 视频文件格式: 文件名的...

  • PHP自动判断编码格式

    让PHP自动判断编码格式,都转换成UTF-8的。搜到一个帖子,是通过判断文件头来判断编码,但是我觉得应该有更简单的...

  • 在Vim中查看文件编码和文件编码转换

    在Vim中查看文件编码 :set fileencoding即可显示文件编码格式。 如果你只是想查看其它编码格式的文...

  • iOS 编码规范

    Table of Contents iOS 编码规范1 文件规范1.1 文件编码1.2 文件命名2 编码格式2.1...

网友评论

      本文标题:node判断文件编码格式

      本文链接:https://www.haomeiwen.com/subject/qgkxyqtx.html