說說 Unicode 編碼

說說 Unicode 編碼

Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字符編碼。它爲每種語言中的每個字符設定了統一併且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求。

Unicode是國際組織制定的可以容納世界上所有文字和符號的字符編碼方案。

Unicode用數字0-0x10FFFF來映射這些字符,最多可以容納1114112個字符,或者說有1114112個碼位。碼位就是可以分配給字符的數字。UTF-8、UTF-16、UTF-32都是將數字轉換到程序數據的編碼方案。

據我所知,java中的虛擬機jvm ,最後也是轉成Unicode編碼運行的。

像一些頁面,javascript也是可以直接運行unicode編碼的。

 

例如:

 

像這個提醒框,裏面彈出來的  就是寫好的unicode編碼,它能夠直接被運行。

這句彈出框的代碼如下:

 

  1. if(fTime==null||fTime.length==0||tTime==null||tTime.length==0){ 
  2. 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等搜索工具去查。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章