用户可以复制和粘贴到文本区域html输入中,并且有时粘贴无效的UTF-8字符,例如,从包含制表符的rtf文件复制和粘贴。
如何检查字符串是否为有效的UTF-8?
发布于 2016-03-31 01:46:29
我想你误解了"UTF-8字符“是什么意思。UTF-8是一种Unicode编码,它可以表示人类历史记录中存在的几乎所有单个字符和字形,因此在一定程度上不存在“无效”的UTF-8字符。
RTF是一种独立于底层编码系统工作的格式化系统-您可以将RTF与ASCII、UTF-8、UTF-16等一起使用。HTML中的文本框只适用于纯文本,所以任何RTF格式都将被自动剥离(除非您使用的是“富编辑”组件,我假设您不是这样做的)。
但是您确实描述了诸如空格字符(如制表符:\t)是用Unicode (因此是UTF-8)表示的。包含这些字符的字符串仍然是“有效的UTF-8",只是对于您的业务需求而言是无效的。
我建议只使用匹配不可见字符的正则表达式来剔除不需要的字符(从这里:Match non printable/non ascii characters and remove from text )
textBoxContent = textBoxContent.replace(/[^\x20-\x7E]+/g, '');表达式[^\x20-\x7E]匹配码点范围0x20 (32,普通空格字符' ')到0x7E (127,平铺'~'字符)之外的任何字符,所有其他字符都将被删除。
Unicode的前127个码点与ASCII码相同,可以在这里看到:http://www.asciitable.com/
发布于 2018-01-04 20:33:12
这只是一个想法:
function checkUTF8(text) {
var utf8Text = text;
try {
// Try to convert to utf-8
utf8Text = decodeURIComponent(escape(text));
// If the conversion succeeds, text is not utf-8
}catch(e) {
// console.log(e.message); // URI malformed
// This exception means text is utf-8
}
return utf8Text; // returned text is always utf-8
}https://stackoverflow.com/questions/36314943
复制相似问题