Javascript 不可打印字符的问题

Javascript 不可打印字符的问题,javascript,html,dom,ascii,Javascript,Html,Dom,Ascii,我正在使用条形码扫描仪将二维数据矩阵、UID条形码读取到web应用程序中。UID包含不可打印的ASCII字符RS、GS和EOT。我的问题是浏览器会自动将HTML代码附加到每个ASCII字符的前面,因为没有为RS、GS和EOT定义HTML代码,所以会抛出一个匹配 我正在使用Javascript从扫描的数据中动态构建一个字符串,下面是我得到的一个示例 091[041)062>030RS 如您所见,RS char被赋予一个值(030),该值不作为标准HTML代码存在。另一个问题似乎是,当一个常规字母字

我正在使用条形码扫描仪将二维数据矩阵、UID条形码读取到web应用程序中。UID包含不可打印的ASCII字符RS、GS和EOT。我的问题是浏览器会自动将HTML代码附加到每个ASCII字符的前面,因为没有为RS、GS和EOT定义HTML代码,所以会抛出一个匹配

我正在使用Javascript从扫描的数据中动态构建一个字符串,下面是我得到的一个示例

091[041)062>030RS

如您所见,RS char被赋予一个值(030),该值不作为标准HTML代码存在。另一个问题似乎是,当一个常规字母字符被点击时,浏览器似乎将其视为回车符(CR),因此前面的值会短暂显示,然后消失

我希望能够在浏览器文本框中显示整个字符串。我有一个javascript函数,可以查找这些不可打印的字符,并将它们替换为字母,即RS将被“R”和“S”的串联替换。但我仍然有浏览器发疯的问题,如上所述。任何见解都值得赞赏

更新:

您好,Mathew,很抱歉没有提供更多详细信息。我已使用replace all标志尝试了以下替换功能:

字符串。替换(/(030)|(029)|(004)/g“”

问题是它替换了整个字符串,所以

091[041)062>030RS

变成

/(030)|(029)|(004)/g


我不确定是否完全理解您的问题,但为什么不在将字符串写入DOM之前对其运行替换函数呢?如果从不打印不可打印的字符,就不会有任何问题


对最新情况的回应 您可以使用正则表达式将不可打印字符与十六进制值匹配。有关详细信息,请查看。下面是一个快速示例:

uid.replace(/[\x30\x29\x04]/g,"")
(请注意,
replace()
函数是在字符串实例上调用的,而不是在
string
本身上调用的。)


<>为了使这个更有效,考虑使用一系列不可打印的字符(即<代码> [\x00 -\x1f\x80-\xff] < /代码>).

我不确定是否完全理解您的问题,但为什么不在将字符串写入DOM之前对其运行替换函数呢?如果从未打印不可打印的字符,则不会有任何问题


对最新情况的回应 您可以使用正则表达式将不可打印字符与十六进制值匹配。有关详细信息,请查看。下面是一个快速示例:

uid.replace(/[\x30\x29\x04]/g,"")
(请注意,
replace()
函数是在字符串实例上调用的,而不是在
string
本身上调用的。)


<>为了使这个更有效,考虑使用一系列不可打印的字符(即<代码> [\x00 -\x1f\x80-\xff] < /代码>).

您可以将标准
%
格式中的特殊字符编码,例如
RS
%1E
@Loadmaster-这到底是如何工作的?我不太熟悉。您可以将标准
%
格式中的特殊字符编码,例如
RS
%1E
@Loadmaster奥克?我不熟悉这个。