如何从字符串中删除控制字符



我的页面上有一个表单,用户可以在其中输入一些文本并提交它。然后文本被发送到服务器(node.js上的REST API)并保存到DB(postgres)。

问题是,一些奇怪的字符(控制字符)偶尔会保存到DB中,例如转义控制字符(^[)或退格控制字符(^ H)。通常情况下,它不会破坏任何内容,因为这些字符是不可见的,所以html是正确呈现的。但是,当我为RSS阅读器提供xml内容时,他们(阅读器)会返回"Malformed xml"因为那些控制字符(删除它们后就可以工作了)。

我的问题是如何在客户端级别(javascript)或服务器级别(javascript/note.js)从字符串中删除这些字符?

Unicode中的控制字符位于代码点U+0000到U+001F以及U+007F到U+009F。使用RegExp查找这些控制字符,并将其替换为空字符串:

str.replace(/[u0000-u001Fu007F-u009F]/g, "")

如果要删除其他字符,请将这些字符添加到RegExp内的字符类中。例如,要删除U+200B ZERO WIDTH SPACE,请在]之前添加u200B

我也遇到过类似的问题,下面是我选择的解决方案。

我使用encodeURIComponent(variable_Name)对来自用户的字符串数据进行了编码,然后在显示时保存

最新更新