CNode

使用node-xlsx解析表格,返回结果是Unicode编码怎么解决啊?

问答
Mmuzi-xiangxiang发布于9 年前最后回复9 年前15 回复7338 浏览0 收藏

image.png 我设置了他的编码格式为utf-8,并没有效果 image.png

查看回复

回复 (15)

F
fangker#1·9 年前

偶尔看到BB几句吧表头中文检测是否有乱码的字节就是那个和屎一样的东西如果有就转换为utf8全部表内容。不要问我为什么踩过坑谢谢

W
weizainiunai#2·9 年前

因为微软在开头加了一个BOM头

M
muzi-xiangxiang#4·9 年前

表格是从飞凡商家平台下载的,用wps打开直接保存,再解析就没有问题了。有没有别的方法可以用?

1
151263#5·9 年前

导出Excel可以试试模板引擎 ejsExcel

M
muzi-xiangxiang#6·9 年前
引用 151263导出Excel可以试试模板引擎 ejsExcel

@151263 不是导出,我现在是读取里面的数据,但是得到的数据中文全是Unicode的

Z
zhhb#7·9 年前

String.fromCharCode.apply(String,'对账明细'.match(/\d{1,}/g))

Z
zhhb#8·9 年前

Unicode就按照unicode来处理咯,这样反而比不容易出现乱码

M
muzi-xiangxiang#9·9 年前
引用 zhhbUnicode就按照unicode来处理咯,这样反而比不容易出现乱码

@zhhb 这样转换太麻烦了,因为我的数据还有英文和中文的结合,我要把对象转成字符串再转成数组进行处理

F
fangker#10·9 年前
引用 muzi-xiangxiang@fangker .xlsx格式的表格打开后看着很正常

@muzi-xiangxiang 我知道,默认就检测有乱码转换就行

M
muzi-xiangxiang#11·9 年前
引用 fangker@muzi xiangxiang 我知道,默认就检测有乱码转换就行

@fangker

String.fromCharCode.apply(String,'VQ鲜榨果汁-梨+柠檬兑换券'.match(/\d{1,}/g));
如上预期输出是:'VQ鲜榨果汁梨柠檬兑换券'
实际却得到了:'鲜榨果汁梨柠檬兑换券'
这样还好转换,如果英文字符在中间我该怎么得到他的位置呢?
M
muzi-xiangxiang#12·9 年前

谢谢各位了,暂时就先用7楼的方法了。就是嵌套了三重循环,数据一多效率好低

F
fangker#13·9 年前
引用 muzi-xiangxiang@fangker

@muzi-xiangxiang 转csv遍历表头只要有中文就转换

Z
zhhb#14·9 年前
引用 muzi-xiangxiang@fangker

@muzi-xiangxiang let str = 'VQ鲜榨果汁-梨+柠檬兑换券' let transStr = str.replace(/(&#\d{1,};)/g,function(match){return String.fromCharCode(match.slice(2,-1))});

思路都是一样的,要学会思考

M
muzi-xiangxiang#15·9 年前
引用 zhhb@muzi xiangxiang let str = 'VQ\&\ 40092;\&\ 27048;\&\ 26524;\&\ 27713; \&\ 26792;+\&\ 26592;\&\ ...

@zhhb 嗯嗯 谢谢,比我的循环替换看着都舒服,主要是我对正则不太懂

参与回复
登录后即可参与回复。登录