繁体   English   中英

不可打印字符的问题

[英]Issues with non-printable characters

我正在使用条形码扫描仪将二维数据矩阵和UID条形码读取到Web应用程序中。 UID包含不可打印的ASCII字符RS,GS和EOT。 我的问题是浏览器会自动将HTML代码附加到每个ASCII字符的前面,并且由于没有为RS,GS和EOT定义的HTML代码,因此很合适。

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

091 [041)062> 030RS

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

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

更新:

嗨,马修(Mathew),对不起,我没有详细介绍。 我尝试了如下替换功能,并带有replace all标志:

String.replace(/(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] )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM