【问题标题】:UTF-16 in nodejsnodejs中的UTF-16
【发布时间】:2021-06-21 21:30:32
【问题描述】:

我有一个 file.txt,它的内容是:

\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064\u0021

它是“Hello World!”在 UTF-16 中。

如果我的代码是:

let data = '\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064\u0021';
console.log(data);

打印出来的是:'Hello World!'

但如果我使用 readFileSync() 和 console.log(),它不会打印出 'Hello World!':

let data = fs.readFileSync('file.txt',{encoding:'utf8', flag:'r'});
console.log(data);

为什么?

例子:

【问题讨论】:

  • 把编码字符串改成utf16怎么样?
  • 您有一个使用 utf8 编码读取的 utf16 文件?
  • 我的意思是:普通文本文件中的 '\u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064\u0021'

标签: javascript node.js


【解决方案1】:

在 JavaScript 字符串字面量的源代码中,\u 后跟四个字符表示Basic Multilingual Plane 中的一个位置。

相同的数字,以字节表示,在各种 Unicode 编码中表示相同的意思。

您的文本文件包含代表这些字符的字节。

它包含表示\ 字符、u 字符等的字节。

【讨论】:

  • 那么,我应该如何将从文件读取的数据转换为utf8?
  • 我首先将数据存储为文本(而不是 JS 源代码)。
  • 非常感谢
猜你喜欢
  • 2012-10-08
  • 2012-08-18
  • 2021-01-06
  • 2012-06-12
  • 1970-01-01
  • 2020-01-29
  • 1970-01-01
  • 2012-06-01
  • 2018-05-18
相关资源
最近更新 更多