我们遇到了一个非常恼人的编码问题,它以loopback开头,但似乎与nodejs相关。 基本上,我们刚刚基于现有的SQL_ASCII编码的postgresql数据库完成了使用Loopback开发API。由于API必须是UTF-8,我们尝试将通过API路由发送的数据转换为ISO-8859-15,以便在我们的基础中正确插入它们。 无论我们尝试过什么iconv,utf8,iso-8859等模块,我们都无法通过ISO-8859-15转换的字符串,我们最终得到了非常奇怪的东西。例如:
var Iconv = require('iconv').Iconv;
var iconv = new Iconv('UTF-8','ISO-8859-1');
var label = iconv.convert("bébé").toString();
如果我们将“标签”插入我们的数据库,我们最终会得到类似的东西= “b�b�”!
所以我们只是试图直接在终端中查看它如何使用基本的nodejs应用程序(没有环回或任何其他框架),但它并没有变得更好。 终端编码设置为“ISO Latin 1”后,代码如下:
console.log('bébé');
在终端中以这种方式显示:
bébé
好像nodejs完全无法处理ISO-8859字符串。 我们错过了吗? 我们注定要使用UTF-8字符串才能使其工作吗?