删除JavaScript中的特殊字符

删除JavaScript中的特殊字符,javascript,node.js,Javascript,Node.js,似乎是一个特殊字符导致我正在使用的库xlsx writestream无法正确编写Excel文件。我发现它的pawe2字符串。它看起来不错,但在linux终端上看起来像: 注意e和2之间有一个奇怪的字符。如何删除这些字符?我还注意到,“pawe�2“.字符编码(4)=20。因此,JavaScript似乎可以很好地读取它。只是在这种情况下,输出Excel文件已损坏。那是什么角色?什么表情符号之类的 您可以从字符串中删除所有非ascii字符(范围为0到127): str.replace(/[^\x0

似乎是一个特殊字符导致我正在使用的库
xlsx writestream
无法正确编写Excel文件。我发现它的
pawe2
字符串。它看起来不错,但在linux终端上看起来像:


注意
e
2
之间有一个奇怪的字符。如何删除这些字符?我还注意到,
“pawe�2“.字符编码(4)=20
。因此,JavaScript似乎可以很好地读取它。只是在这种情况下,输出Excel文件已损坏。那是什么角色?什么表情符号之类的

您可以从字符串中删除所有非ascii字符(范围为0到127):

str.replace(/[^\x00-\x7F]/g, "");

这是否会从字符串中删除比预期更多的字符取决于您的要求。

您可以从字符串中删除所有非ascii字符(范围为0到127):

str.replace(/[^\x00-\x7F]/g, "");

这是否会从字符串中删除比所需更多的字符取决于您的要求。

这似乎不会删除字符。我需要先将字符串转换成这种格式吗?我的字符串当前看起来不像
\x00
例如?@JiewMeng-您必须将
.replace()
的结果分配给某个对象。字符串是不可变的,因此不会直接更改
.replace()
返回一个新字符串。这似乎不会删除该字符。我需要先将字符串转换成这种格式吗?我的字符串当前看起来不像
\x00
例如?@JiewMeng-您必须将
.replace()
的结果分配给某个对象。字符串是不可变的,因此不会直接更改
.replace()
返回一个新字符串。查看将文档语言设置为使用未知字符的语言是否会使问题自动消失。这是xlsx-writestream中的问题。由于XML不允许文档中的每个Unicode代码点,OpenXML具有转义机制。您的字符串应该作为pawe_x0014_2写入xlsx XML。如果将其放入要转换为OpenXML的JavaScript数据中,它将被逐字复制,Excel将其视为␔ (U+0014)并对此感到满意。(这是xlsx writestream中的一个bug,因为如果我的JavaScript数据中有pawe_x0014_2,我希望Excel能够准确地看到这些字符。)查看将文档语言设置为使用未知字符的语言是否会使问题自动消失。这是xlsx-writestream中的一个问题。因为XML不允许文档中的每个Unicode代码点,所以OpenXML有一个转义机制。您的字符串应该作为pawe_x0014_2写入xlsx XML。如果将其放入要转换为OpenXML的JavaScript数据中,它将被逐字复制,Excel将其视为␔ (U+0014)并对此感到满意。(这是xlsx writestream中的一个bug,因为如果我的JavaScript数据中有pawe_x0014_2,我希望Excel能够准确地看到这些字符。)