说说 Unicode 编码
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。
Unicode用数字0-0x10FFFF来映射这些字符,最多可以容纳1114112个字符,或者说有1114112个码位。码位就是可以分配给字符的数字。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
据我所知,java中的虚拟机jvm ,最后也是转成Unicode编码运行的。
像一些页面,javascript也是可以直接运行unicode编码的。
例如:
像这个提醒框,里面弹出来的 就是写好的unicode编码,它能够直接被运行。
这句弹出框的代码如下:
- if(fTime==null||fTime.length==0||tTime==null||tTime.length==0){
- alert("\u6e29\u99a8\u63d0\u793a\uff1a\u8be5\u51fa\u5dee\u65b9\u5f0f\u9700\u5148\u586b\u5199\u597d\u000d\u000d\u3010\u51fa\u5dee\u5f00\u59cb\u65f6\u95f4\u3011\u4e0e\u3010\u51fa\u5dee\u7ed3\u675f\u65f6\u95f4\u3011\u000d\u000d\u65b9\u53ef\u81ea\u52a8\u8ba1\u7b97\u3010\u8865\u52a9\u5929\u6570\u3011\u3010\u51fa\u5dee\u8865\u52a9\u3011\u3010\u4f19\u98df\u8865\u52a9\u3011");
- }
在其中有用到非常有用的 换行 unicode编码,
也就是 \u000d
用 <br > 好像不行
那我们如何更快的把中文字符 转成 unicode编码呢?
其实 jdk里面 就有快速转换的工具。
d:\j2sdk1.4.2_19\bin\native2ascii.exe
d:\j2sdk1.4.2_19\bin\native2ascii.exe 这个工具如何使呢??
直接在cmd中输入命令:
native2ascii 源文件名.txt 新文件名.txt
这句命令 就可以把 中文的文件转成 unicode的文件
unicode 和utf-8 到底有什么不同呢?
简单来说,unicode,gbk和BIG-5码(大五码,香港台湾等地所用)就是编码的值,而utf-8,uft-16之类就是这个值的表现形式。
前面那三种编码是兼容的,同一个汉字,那三个码值是完全不一样的。如"汉"的uncode值与gbk就是不一样的,假设uncode为a040,gbk为b030,而uft-8码,就是把那个值表现的形式。utf-8码完全只针对uncode来组织的,如果gbk要转utf-8必须先转uncode码,再转utf-8就OK了。
关于使用场景嘛,我能说的就是,在jvm里运行时是把其他的编码转成unicode编码再运行的,
我自己使用过的经历,就是解决 java代码里包含的js代码的乱码问题。
(各个语言采用的编码机制有些不一样,C用的是ACSII,java用的是Unicode。)
10**翔(广州) 15:00:07
其实这个编码在项目的配置文件中会经常用的到,在配置文件中,如:struts.properties。占位符
Johnny 15:00:57
那 在配置文件中用 这种unicode编码有什么好处呢?
我自己觉得应该就是,能更快的在jvm里运行吧。
jvm里所用的编码就是unicode
类文件都是通过jvm运行的,而要让jvm运行 要先转成unicode
我大概就知道这些了,关于更多的unicode编码的知识,大家可以通过 百度、google、duckduckgo等搜索工具去查。