在接受、存储、处理和显示 Unicode 文本的应用程序中(为了讨论的目的,我们假设它是一个 Web 应用程序),哪些字符应该always从传入文本中删除?
我能想到一些,大部分列在C0 和 C1 控制代码维基百科文章 http://en.wikipedia.org/wiki/C0_and_C1_control_codes:
范围0x00
-0x19
(主要是控制字符),不包括0x09
(tab), 0x0A
(LF),和0x0D
(CR)
范围0x7F
-0x9F
(更多控制字符)
可以安全使用的字符范围accepted如果知道的话就更好了。
还有其他级别的文本过滤——可能会规范化具有多种表示形式的字符、替换不间断字符以及删除零宽度字符——但我主要对基础知识感兴趣。
参见W3XML 和其他标记语言中的 Unicode http://www.w3.org/TR/unicode-xml/笔记。它将一类字符定义为“不鼓励在标记中使用”,我肯定会在大多数网站上过滤掉这些字符。它特别包括以下字符:
此外,您可能希望过滤/替换在 Unicode 中根本无效的字符(U+FFFF 等),并且如果您使用的是原生支持 UTF-16 的语言(例如 Java、Python) Windows),任何不形成有效代理对的代理字符(U+D800–U+DFFF)。
范围 0x00-0x19(主要是控制字符),不包括 0x09(制表符)、0x0A (LF) 和 0x0D (CR)
可以说(尤其是对于 Web 应用程序),也会丢失 CR,并将制表符变成空格。
范围0x7F-0x9F(更多控制字符)
是的,远离那些,除非人们可能真的这么想。 (SO 曾经允许它们,这允许人们发布被错误解码的字符串,这有时对于诊断 Unicode 问题很有用。)对于大多数网站,我认为你不会想要它们。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)