我们遇到了一个非常恼人的编码问题,它以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();

如果我们将"label"插入到我们的数据库中,我们最终会得到像= "b�b�" 这样的东西!

所以我们只是试着直接在终端中查看它如何使用基本的nodejs应用程序(没有环回或任何其他框架),但它并没有变得更好 . 终端编码设置为“ISO Latin 1”后,代码如下:

console.log('bébé');

在终端中以这种方式显示:

bébé

好像nodejs完全无法处理ISO-8859字符串 . 我们错过了吗?我们注定要使用UTF-8字符串才能使其工作吗?