为什么node.js在不同平台上对相同字符串的解码方式不同?

时间:2019-02-28 02:48:50

标签: node.js windows character-encoding

我目前有一个字符串ƴǮǮȏϘЁЎϊդ࠷ࡔც,我已经用JS对encodeURIComponent的JS进行了编码,使其成为%C6%B4%C7%AE%C7%AE%C8%8F%CF%98%D0%81%D0%8E%CF%8A%D5%A4%E0%A0%B7%E0%A1%94%E1%83%AA

当我尝试在Linux上的node.js中使用encodeURIComponent对其进行解码时,确实得到了原始字符串。但是,当我尝试在Windows上使用node.js对其进行解码时,我得到的是:ƴǮǮÈϘÐЎϊդ࠷ࡔც。有什么理由吗?对于我来说,奇怪的是,跨平台的输出是不同的。

这只是用不同的编码秘密地发生了吗?如何将该Windows字符串转换回我想要的原始格式?

1 个答案:

答案 0 :(得分:1)

虽然您可能会遇到错误,但是Node.js 应该在每个平台上都做完全相同的事情。

我更可能是以下一种解释:

  1. 每个平台上的输入数据都不同。
  2. 用于检查输出的工具在每个平台上都不同,或者这些工具的设置也不同。

那是你应该去的地方。

就其价值而言,您发布的“字符串”已完全损坏。至少以您将其发布到堆栈溢出的方式。

大多数与javascript字符串相关的工具都希望使用UTF-8,以及您发布的内容……好吧,可能有很多事情,但看起来不像人类语言。它看起来像是“曾经是”某种编码形式的有效文本,被错误的解码器误解了,然后被复制粘贴到stackoverflow(即UTF-8)中。是mojibake