【发布时间】:2016-09-26 22:22:44
【问题描述】:
我有一个从供应商那里得到的 csv,他们用 UTF-8 编码了一个字符串,现在包含黑色问号。我尝试将其转换回来,但没有运气。
var common = require('./common/index.js');
var fs = require('fs');
var Iconv = require('iconv').Iconv;
var encoding = require('encoding');
var iconv = new Iconv('UTF-8', 'ISO-8859-1');
var detectCharacterEncoding = require('detect-character-encoding');
common.fileHandler(
'default.csv',
function(dataSet) {
var fileBuffer = fs.readFileSync('file.txt');
var charsetMatch = detectCharacterEncoding(fileBuffer);
console.log(charsetMatch);
console.log(encoding.convert(dataSet[0].description, 'UTF-8', 'ISO-8859-1'))
}
)
返回
{ encoding: 'UTF-8', confidence: 100 }
<Buffer c3 bd 20 53 79 6e 63 20 64 61 74 61 20 61 6e 64 20 66 61 73 74 20 63 68 61 72 67 69 6e 67 3c 62 72 2f 3e c3 bd 20 50 72 65 6d 69 75 6d 20 61 6c 75 6d 69 ...>
非常感谢任何帮助
【问题讨论】:
-
有时当您将文档转换为另一种编码格式时,所有原始编码数据都消失了,您对此无能为力,如果您有此 csv 的原始版本(尚未转换),那么您将有机会将其转换为正确的编码格式
-
common.fileHandler到底在做什么?dataSet是什么?你知道file.txt的编码但是转换dataSet[0].description至极似乎是从default.csv创建的?所有这些(不同的)东西呢? -
@neurnet 谢谢你一针见血,我从供应商那里收到的实际 csv 编码为 { encoding: 'ISO-8859-1', confidence: 29 } 我读过网上很多,这发生在从“ISO-8859-1”转换为UTF-8之间,反之亦然,但我似乎无法将其转换回或删除字符,谷歌商业中心(我在验证后将数据导入回)是抱怨双 UTF8 编码
标签: javascript node.js encoding utf-8 iconv