在NodeJS中将字符串从utf8转换为latin1

时间:2015-02-18 21:42:52

标签: node.js encoding utf-8 latin1

我使用的是Latin1编码的数据库,无法将其更改为UTF-8,这意味着我遇到了某些应用程序数据的问题。我使用Tesseract来OCR文档(tesseract以UTF-8编码)并尝试使用iconv-lite;但是,它会创建一个缓冲区并将该缓冲区转换为字符串。但同样,缓冲区到字符串转换不允许" latin1"编码

我已经阅读了一堆问题/答案;但是,我得到的只是设置客户端编码和类似的东西。

有什么想法吗?

3 个答案:

答案 0 :(得分:3)

从 Node.js v7.1.0 开始,您可以使用 transcode 模块中的 buffer 函数:
https://nodejs.org/api/buffer.html#buffer_buffer_transcode_source_fromenc_toenc

例如:

const buffer = require('buffer');
const latin1Buffer = buffer.transcode(Buffer.from(utf8String), "utf8", "latin1");
const latin1String = latin1Buffer.toString("latin1");

答案 1 :(得分:2)

你可以从你拥有的UFT8字符串创建一个缓冲区,然后使用iconv-lite将该缓冲区解码为Latin 1,就像这样

var buff   = new Buffer(tesseract_string, 'utf8');
var DB_str = iconv.decode(buff, 'ISO-8859-1');

答案 2 :(得分:0)

我找到了将任何编码文本文件转换为UTF8

的方法
var 
  fs = require('fs'),
  charsetDetector = require('node-icu-charset-detector'),
  iconvlite = require('iconv-lite');

/* Having different encodings
 * on text files in a git repo
 * but need to serve always on 
 * standard 'utf-8'
 */
function getFileContentsInUTF8(file_path) {
  var content = fs.readFileSync(file_path);
  var original_charset = charsetDetector.detectCharset(content);
  var jsString = iconvlite.decode(content, original_charset.toString());
  return jsString;
}

我也在这里:[{3}}

也许你可以试试这个,其中content应该是你的数据库缓冲区数据(用latin1编码)