gpt4 book ai didi

node.js - 将windows1252转换为NodeJS特殊字符中的utf-8

转载 作者:行者123 更新时间:2023-12-05 09:13:04 24 4
gpt4 key购买 nike

我正在使用 NodeJS 版本 12 构建 Web 应用程序。我有来自旧 MySQL 数据库的数据。由于旧数据库的编码问题,有几个字段包含无法正确显示的字符。已经有一些类似的问题,但没有一个能解决我的问题。尝试之后,我离解决方案更近了一点,但仍然需要这方面的帮助。

要转换的数据库中的当前值:

Rikuchi SokuryoÌ„bu [cartographer], 陸地測é‡éƒ¨

所需的新数据库值:

Rikuchi Sokuryōbu [cartographer], 陸地測量部

问题是 same as described in this similar question .但是,接受的答案并不能解决我的问题。我需要写一个 NodeJS 来将数据库中的数据转换成可读的字符串。

我也尝试关注 the answer in this similar question .我知道该值需要先转换为二进制,然后再转换为所需的编码。但是,它不会返回所需的结果。我用 iconv 和 iconv-lite 包试过了。

尝试 1:

let buf = new Buffer(body, 'binary');
let conv = new iconv.Iconv('windows-1252', 'utf8');
let str = conv.convert(buf).toString();
console.log(`original: ${body} output: ${str.toString()}`);

// original: Rikuchi SokuryoÌ„bu [cartographer], 陸地測é‡éƒ¨
// output: Rikuchi SokuryoМbu [cartographer], й"ёеS°жё¬й!Џй’Ё

尝试 2:iconv-lite

let buf = new Buffer(body, 'binary');
const str = iconvlite.decode(buf, 'windows-1252');
console.log(`original: ${body} output: ${str.toString()}`);

// original: Rikuchi SokuryoÌ„bu [cartographer], 陸地測é‡éƒ¨
// output: Rikuchi SokuryoМbu [cartographer], й"ёеS°жё¬й!Џй’Ё

尝试 3:iconv-lite

// This one *almost* works however there are still some undefined characters

let buf = new Buffer(body, 'utf-8');
const win = iconvlite.encode(buf, 'windows-1252');
console.log(`original: ${body} output: ${win.toString()}`);

// original: Rikuchi SokuryoÌ„bu [cartographer], 陸地測é‡éƒ¨
// output: Rikuchi Sokuryōbu [cartographer], 陸地測�?部

更新:

本站string-functions.com可以对字符串进行编码和解码。

使用以下设置正确解码了整个有问题的字符串:“编码方式:Windows-1252”和“解码方式:utf-8”

它也适用于该问题的较大示例。我只需要准确地复制这个网站是如何进行转换的。我在尝试 #3 中的代码非常接近,但肯定少了一步。

stringfunctions.com

最佳答案

我通过使用 windows-1252 模块对原始文本进行编码然后使用 iconv-lite 模块对其进行解码来解决这个问题。

const win = windows1252.encode(body);
const str = iconvlite.decode(win, 'utf-8');
return str.toString();

关于node.js - 将windows1252转换为NodeJS特殊字符中的utf-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56778736/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com