NCR(Numeric Character Reference)简单介绍
来源:互联网 发布:数据存储的方式 编辑:程序博客网 时间:2024/05/22 06:24
1 从字符编码谈起
读写文字是人与动物的最大区别,不同的种族发明了不同的语言文字,对这些文字进行二进制表示是计算机领域必须要解决的问题。文本处理在计算机程序中占有相当大的比例,尤其是在web程序中,几乎大部分程序逻辑都是为了最终输出处理过的文本。目前世界上存在有很多种字符编码标准,各个标准并不完全兼容,甚至完全不同,从而导致了“乱码”这个让很多程序员都胆战心惊的东西。
尽管目前统一的编码规范UNICODE大行其道,被越来越广泛地使用,然而尚未达到完全统治字符编码界的水平。
2 元字符与不可编码字符
2.1 元字符
在标记语言中,都会定义一些被称为“元字符”的特殊字符,这些字符具有特殊的作用,不再具有原来字面上的意义。我们以HTML为例,小于号(<)就是一个最常用的元字符,它表示一个标签的开始,而不再具有“小于号”这个字面意义。
那么想要这些元字符的字面含义该怎么办呢?
解决方法就是:用元字符引导字符序列来表示元字符的字面含义。例如在HTML中元字符<的字面值就是用如下序列表示。
<
2.2 不可编码字符
很多的字符编码标准并不能涵盖所有的字符,例如ASCII编码只包含128个字符,根本不能表示英文之外的其他任何语言文字。这样就会导致一个问题:想要在ASCII编码的文件中记录汉字怎么办?
解决方法就是:用元字符引导的可编码字符序列来表示不可编码字符。解码程序能够识别这个格式的字符序列,然后把它转换成原本的不可编码字符。例如,汉字“中”在ASCII编码的HTML文件中可以使用如下序列表示。
中
这个序列只含有可以用ASCII编码的字符。浏览器在遇到这个序列时,自动转换为汉字“中”并正确显示出来,当然前提是浏览器自身具有显示汉字的能力。
3 两种解决方式
前面提到的元字符引导的可编码字符序列到底是如何规定的呢?目前有两种方案
3.1 一种是HTML中广为使用的被称作实体的规范
例如上面提到的
<
这种规范中定义了很多特定的字符序列,然而总归是非常有限的,主要是为了表示元字符的字面值。对于广大的汉字仍不能表示。
3.1 另一种是被称作NCR的规范
在NCR中,使用字符的UNICODE代码点数值的十进制或十六进制表示字符串来代表这个字符。例如上面例子中
中
其中的20013就是汉字“中”在UNICODE编码中的代码点。当然也可以使用16进制来表示,如下
中
这种规范看似简单,却非常强大,因为它可以表示任意的字符,只用UNICODE编码中定义了这个字符,它就可以轻松表示。存在的问题是,很少有人能记住一个字符的UNICODE代码点,需要去查表才行。
尽然NCR能表示任何字符,当然也能够表示元字符的字面值了,例如前面的
<
也可以使用
<
来表示。
4 好玩的UNICODE字符
UNICODE编码涵盖了世界上已知的所有字符,除了各种语言的文字外,还包含了很多符号,标记。下面给出几个小例子。
- ★ 对应 ★
- ⚔ 对应 ⚔
- ⚕ 对应 ⚕
- ✓ 对应 ✓
另外,UNICODE中还定义了一些组合字符,它们本身不能单独存在,必须作用于前面的基本字符上,例如常见的重音符号。
- A̎ 对应 A̎
广大的90后小朋友网络上广泛使用的火星文就是把各种UNICODE字符按照特定的规则组合起来的。
如下序列:
づ火☆攵ā
显示效果:
づ火☆攵ā
- NCR(Numeric Character Reference)简单介绍
- numeric character reference(NCR) (数字字符引用)
- 将 NCR(Numeric Character Reference) 字符转换为真实字符的方法
- Numeric Character Reference转NSString
- MySQL decimal、numeric数据类型介绍
- CASE types character varying and numeric cannot be matched
- 实体码和字符转码---Character entity references 和 numeric character references
- entity reference name can not contain character...
- Unescaped & or nonterminated character/entity reference
- Springmvc UPDATE 数据时 ORA-01858:a non-numeric character was found where a numeric was expected
- NCR 公司
- weak reference的介绍
- Fortran 程序编译时错误 Error: Non-numeric character in statement label at (1)
- ORA-06502: PL/SQL: numeric or value error: character string buffer too small
- ORA-06502: PL/SQL: numeric or value error: character string buffer too small
- ORA-06502: PL/SQL: numeric or value error: character string buffer too small
- C Reference Manual Reading Notes: 001 Character set
- Intellij IDEA——Unescaped & or nonterminated character/entity reference
- 编写简单的驱动
- 数据挖掘十大经典算法之一:K近邻
- AD10遇到的问题(Ctrl+pgdn快捷键电路图不居中 每次更新PCB原件就跳出板外 编译集成库遇到提示这个警告: warning:Extra pin …in Normal of part…)
- c++模板学习
- 使用内存数据库/数据集以提高执行速度
- NCR(Numeric Character Reference)简单介绍
- AD10原理图库经验(方框覆盖了引脚内容)
- 系统io各个函数用法总结
- 发送手机短信获取验证码功能
- python 导出hive数据表的schema
- java关键字this
- 企业级 J2EE 框架 Core-Classic
- [Java基础笔记]读写部分
- 表达式