最近进行接口测试时抓包发现请求响应中有类似下面这些字符
每日
起初试图对这些编码尝试各种decoder操作来一探其真身,遗憾的是均已失败告终(后来发现,这些编码可以在浏览器中正常显示)。最后得知这种奇怪的编码格式并不是编码,而是一种叫做 NCR(Numeric Character Reference) 的标记方法!
什么是NCR
NCR编码通常是指字符的Numeric Character Reference(数值字符引用)编码方式,这是一种在HTML、XML等标记语言中表示特殊字符的方法。当需要在网页中显示某些特殊字符(如版权符号©、商标符号™等),而直接输入这些字符可能会因字符集支持问题导致显示错误时,就可以使用NCR编码来确保正确显示。
NCR编码的基本形式有两种:
-
Decimal Encoding(十进制编码):格式为
&#数字;
,其中数字是字符在Unicode编码表中的十进制表示。例如,版权符号©可以用©
或者©
表示。 -
Hexadecimal Encoding(十六进制编码):格式为
&#x十六进制数;
,这里的十六进制数同样对应字符的Unicode码位。例如,商标符号™可以用™
或™
表示。
使用NCR编码的主要好处在于它能实现字符的跨平台和跨浏览器兼容性显示。
NCR主要优势
以下是NCR编码的一些主要优势:
兼容性:NCR允许网页或文档在不同的字符集和编码环境下正确显示特殊字符。即使目标系统不支持直接使用某些字符,通过其Unicode编码值也能展示这些字符,提高了内容的普遍可读性。
避免乱码:在某些情况下,直接使用特殊字符可能会因为编码不匹配而显示为乱码。使用NCR编码可以规避这种风险,确保内容以预期的形式展现给用户。
网页安全:对于HTML等标记语言,NCR可以帮助避免直接使用特殊字符可能引起的解析错误,保证了网页结构的完整性。
易于输入和存储:对于那些难以直接通过键盘输入的特殊字符,NCR提供了一种简便的输入方式,只需要其Unicode编码值即可。这在编程和数据库存储中特别有用,可以统一和简化处理流程。
控制显示:在某些场景下,开发者可能希望精确控制字符如何显示,比如防止文本被错误解释或者需要明确指定字符的呈现形式,NCR提供了这样的控制手段。
本文介绍了NCR的定义,接下来我会继续讲解,如何通过Java 解析NCR,大家敬请关注!!!
使用Java apache commons包五分钟搞定NCR解析(内附源码)-CSDN博客
我的每一篇文章都希望帮助读者解决实际工作中遇到的问题!如果文章帮到了您,劳烦点赞、收藏、转发!您的鼓励是我不断更新文章最大的动力!