[英]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.