首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >检查javascript字符串是否为有效的UTF-8

检查javascript字符串是否为有效的UTF-8
EN

Stack Overflow用户
提问于 2016-03-31 00:46:26
回答 2查看 19.4K关注 0票数 10

用户可以复制和粘贴到文本区域html输入中,并且有时粘贴无效的UTF-8字符,例如,从包含制表符的rtf文件复制和粘贴。

如何检查字符串是否为有效的UTF-8?

EN

回答 2

Stack Overflow用户

发布于 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 )

代码语言:javascript
运行
复制
textBoxContent = textBoxContent.replace(/[^\x20-\x7E]+/g, '');

表达式[^\x20-\x7E]匹配码点范围0x20 (32,普通空格字符' ')到0x7E (127,平铺'~'字符)之外的任何字符,所有其他字符都将被删除。

Unicode的前127个码点与ASCII码相同,可以在这里看到:http://www.asciitable.com/

票数 5
EN

Stack Overflow用户

发布于 2018-01-04 20:33:12

这只是一个想法:

代码语言:javascript
运行
复制
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
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36314943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档