我使用的是Latin1编码的数据库,无法将其更改为UTF-8,这意味着我遇到了某些应用程序数据的问题。我使用Tesseract来OCR文档(tesseract以UTF-8编码)并尝试使用iconv-lite;但是,它会创建一个缓冲区并将该缓冲区转换为字符串。但同样,缓冲区到字符串转换不允许" latin1"编码
我已经阅读了一堆问题/答案;但是,我得到的只是设置客户端编码和类似的东西。
有什么想法吗?
答案 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编码)