w3c php的转义符,根据PHP中的W3C规范化Unicode

在W3C validator中验证我网站的HTML代码时,我收到了以下警告:

Line 157, Column 220: Text run is not in Unicode Normalization Form C.

…ivemin…

我正在PHP 5.3.x中开发它,所以我可以使用Normalizer类.

所以,为了解决这个问题,我应该在显示用户输入的任何输入时使用Normalizer :: normalize($output)(例如注释),还是应该在存储之前对任何用户输入使用Normalizer :: normalize($input)它在数据库中/p>

tl; dr:我应该在将用户输入存储在数据库中之前还是仅在显示时使用Unicode normalization/p>

解决方法:

您可以根据应用程序的目的和性质来决定是在读取用户输入时应用规范化,还是将其存储到数据库中,或者在编写时,或者根本不应该.总结问题评论中提到的长线程,也可以在http://validator.w3.org/feedback.html的官方列表存档中找到

>警告信息来自实验性的“HTML5验证”(实际上是一个短信,除了一些正式的测试之外还应用主观规则).

>该消息不是基于HTML5草案中的任何要求,而是基于对可能导致某些软件出现问题的意见.

>最初的意见“HTML5验证”发出错误信息,现在是一个警告.

尽管不常见,将非标准化数据作为用户输入是可能的.这不依赖于浏览器执行的规范化(它们不会做这些事情,尽管可能在将来可能会这样做),而是依赖于输入方法和习惯.例如,键入字母ü(u umlaut或u with diaeresis)的方法往往会产生预组合形式的字符,如规范化.人们可以将它生成为非标准化的,分解形式,如字母u,然后结合分离,但他们通常没有理由这样做,大多数人甚至不知道如何做到这一点.

如果您在软件中进行字符串比较,它们可能会或可能不会(取决于所使用的比较例程)处理,例如预组合ü等于分解的表示.简单的实现将它们视为不同的,因为它们在简单的字符级别(Unicode代码点)上肯定是不同的.

在最近的写作阶段,在某些时候进行标准化的一个原因是预组合字符通常会更可靠地显示.要呈现标准化的ü,程序只需从字体中获取字形.为了呈现一个分解的ü,一个程序必须要么将它识别为规范化的ü,或者用正确放置在它上面的分音符号写出字母u,并适当注意字形的图形属性,并且许多程序失败在这.

另一方面,在作为用户输入接收非标准化数据的极少数情况下,用户可能有理由产生它.他可能认为归一化ü和非归一化ü是不同的,需要对其进行处理.

相关资源:Ztrans丹诚软件Z39.50客户端-其它工具类资源-CSDN文库

来源:丹宇

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年3月1日
下一篇 2021年3月1日

相关推荐