日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

java中文亂碼解決之道

瀏覽:16日期:2022-09-06 11:17:12

隨著計算機的發展、普及,世界各國為了適應本國的語言和字符都會自己設計一套自己的編碼風格,正是由于這種亂,導致存在很多種編碼方式,以至于同一個二進制數字可能會被解釋成不同的符號。為了解決這種不兼容的問題,偉大的創想Unicode編碼應時而生!!

Unicode

Unicode又稱為統一碼、萬國碼、單一碼,它是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一并且唯一的二進制編碼,以滿足跨語言、跨平臺進行文本轉換、處理的要求。可以想象Unicode作為一個“字符大容器”,它將世界上所有的符號都包含其中,并且每一個符號都有自己獨一無二的編碼,這樣就從根本上解決了亂碼的問題。所以Unicode是一種所有符號的編碼[2]。

Unicode伴隨著通用字符集的標準而發展,同時也以書本的形式對外發表,它是業界的標準,對世界上大部分的文字系統進行了整理、編碼,使得電腦可以用更為簡單的方式來呈現和處理文字。Unicode至今仍在不斷增修,迄今而至已收入超過十萬個字符,它備受業界認可,并廣泛地應用于電腦軟件的國際化與本地化過程。

我們知道Unicode是為了解決傳統的字符編碼方案的局限而產生的,對于傳統的編碼方式而言,他們都存在一個共同的問題:無法支持多語言環境,這對于互聯網這個開放的環境是不允許的。而目前幾乎所有的電腦系統都支持基本拉丁字母,并各自支持不同的其他編碼方式。Unicode為了和它們相互兼容,其首256字符保留給ISO 8859-1所定義的字符,使既有的西歐語系文字的轉換不需特別考量;并且把大量相同的字符重復編到不同的字符碼中去,使得舊有紛雜的編碼方式得以和Unicode編碼間互相直接轉換,而不會丟失任何信息[1]。

實現方式

一個字符的Unicode編碼是確定的,但是在實際傳輸過程中,由于不同系統平臺的設計不一定一致,以及出于節省空間的目的,對Unicode編碼的實現方式有所不同。Unicode的實現方式稱為Unicode轉換格式(Unicode Transformation Format,簡稱為UTF)[1]。

Unicode是字符集,它主要有UTF-8、UTF-16、UTF-32三種實現方式。由于UTF-8是目前主流的實現方式,UTF-16、UTF-32相對而言使用較少,所以下面就主要介紹UTF-8。

UCS

提到Unicode可能有必要了解下,UCS。UCS(Universal Character Set,通用字符集),是由ISO制定的ISO 10646(或稱ISO/IEC 10646)標準所定義的標準字符集。它包括了其他所有字符集,保證了與其他字符集的雙向兼容,即,如果你將任何文本字符串翻譯到UCS格式,然后再翻譯回原編碼,你不會丟失任何信息。

UCS不僅給每個字符分配一個代碼,而且賦予了一個正式的名字。表示一個UCS或Unicode值的十六進制數通常在前面加上“U+”,例如“U+0041”代表字符“A”。

Little endian & Big endian

由于各個系統平臺的設計不同,可能會導致某些平臺對字符的理解不同(比如字節順序的理解)。這時將會導致同意字節流可能會被解釋為不同的內容。如某個字符的十六進制為4E59,拆分為4E、59,在MAC上讀取時是歐諾個低位開始的,那么MAC在遇到該字節流時會被解析為594E,找到的字符為“奎”,但是在Windows平臺是從高字節開始讀取,為4E59,找到的字符為“乙”。也就是說在Windows平臺保存的“乙”跑到MAC平臺上就變成了“奎”。這樣勢必會引起混亂,于是在Unicode編碼中采用了大頭(Big endian)、小頭(Little endian)兩種方式來進行區分。即第一個字節在前,就是大頭方式,第二個字節在前就是小頭方式。那么這個時候就出現了一個問題:計算機怎么知道某個文件到底是采用哪種編碼方式的呢?

Unicode規范中定義,每一個文件的最前面分別加入一個表示編碼順序的字符,這個字符的名字叫做'零寬度非換行空格'(ZERO WIDTH NO-BREAK SPACE),用FEFF表示。這正好是兩個字節,而且FF比FE大1。

如果一個文本文件的頭兩個字節是FE FF,就表示該文件采用大頭方式;如果頭兩個字節是FF FE,就表示該文件采用小頭方式。

UTF-8

UTF-8是一種針對Unicode的可變長度字符編碼,可以使用1~4個字節表示一個符號,根據不同的符號而變化字節長度。它可以用來表示Unicode標準中的任何字符,且其編碼中的第一個字節仍與ASCII兼容,這使得原來處理ASCII字符的系統無須或只須做少部份修改,即可繼續使用。因此,它逐漸成為電子郵件、網頁及其他存儲或傳送文字的應用中,優先采用的編碼。

UTF-8使用一到四個字節為每個字符編碼,編碼規則如下:

1)對于單字節的符號,字節的第一位設為0,后面7位為這個符號的unicode碼。因此對于英語字母,UTF-8編碼和ASCII碼是相同的。

2)對于n字節的符號(n>1),第一個字節的前n位都設為1,第n+1位設為0,后面字節的前兩位一律設為10。剩下的沒有提及的二進制位,全部為這個符號的unicode碼。

轉換表如下:

Unicode

UTF-8

0000 ~007F

0XXX XXXX

0080 ~07FF

110X XXXX 10XX XXXX

0800 ~FFFF

1110XXXX 10XX XXXX 10XX XXXX

1 0000 ~1F FFFF

1111 0XXX 10XX XXXX 10XX XXXX 10XX XXXX

20 0000 ~3FF FFFF

1111 10XX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX

400 0000 ~7FFF FFFF

1111 110X 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX

根據上面的轉換表,理解UTF-8的轉換編碼規則就變得非常簡單了:第一個字節的第一位如果為0,則表示這個字節單獨就是一個字符;如果為1,連續多少個1就表示該字符占有多少個字節。

以漢字'嚴'為例,演示如何實現UTF-8編碼[3]。

已知'嚴'的unicode是4E25(100111000100101),根據上表,可以發現4E25處在第三行的范圍內(0000 0800-0000 FFFF),因此'嚴'的UTF-8編碼需要三個字節,即格式是'1110xxxx 10xxxxxx 10xxxxxx'。然后,從'嚴'的最后一個二進制位開始,依次從后向前填入格式中的x,多出的位補0。這樣就得到了,'嚴'的UTF-8編碼是'11100100 10111000 10100101',轉換成十六進制就是E4B8A5。

Unicode與UTF-8之間的轉換

通過上面的例子我們可以看到'嚴'的Unicode碼為4E25,UTF-8編碼為E4B8A5,他們兩者是不一樣的,需要通過程序的轉換來實現,在Window平臺最簡單的直觀的方法就是記事本。

java中文亂碼解決之道

在最下面的'編碼(E)'處有四個選項:ANSI、Unicode、Unicode big endian、UTF-8。

ANSI:記事本的默認的編碼方式,對于英文文件是ASCII編碼,對于簡體中文文件是GB2312編碼。注意:不同 ANSI 編碼之間互不兼容,當信息在國際間交流時,無法將屬于兩種語言的文字,存儲在同一段 ANSI 編碼的文本中

Unicode:UCS-2編碼方式,即直接用兩個字節存入字符的Unicode碼。該方式是'小頭'little endian方式。

Unicode big endian:UCS-2編碼方式,'大頭'方式。

UTF-8:閱讀上面(UTF-8)。

>>>實例:在記事本中輸入'嚴'字,依次選擇ANSI、Unicode、Unicode big endian、UTF-8四種編碼風格,然后另存為,使用EditPlus文本工具使用'16進制查看器'進行查看,得到如下結果:

java中文亂碼解決之道

java中文亂碼解決之道

java中文亂碼解決之道

java中文亂碼解決之道

ANSI:兩個字節'D1 CF'正是'嚴'的GB2312編碼。

Unicode:四個字節'FF FE 25 4E',其中'FF FE'表示小頭存儲方式,真正的編碼為'25 4E'。

Unicode big endian:四個字節'FE FF 4E 25','FE FF'表示大頭存儲方式,真正編碼為'4E 25'。

UTF-8:編碼是六個字節'EF BB BF E4 B8 A5',前三個字節'EF BB BF'表示這是UTF-8編碼,后三個'E4B8A5'就是'嚴'的具體編碼,它的存儲順序與編碼順序是一致的。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
中文另类视频| 欧美日韩少妇| 午夜欧美巨大性欧美巨大| 欧美一级一区| 亚洲作爱视频| 久久久久国产一区二区| 成午夜精品一区二区三区软件| 欧美久久一区二区三区| 亚洲永久字幕| 欧美综合另类| 欧美天堂视频| 成人三级高清视频在线看| 美腿丝袜亚洲三区| 国产欧美在线| 蜜臀91精品一区二区三区| 久久久人人人| 免费在线亚洲| 久久不见久久见免费视频7| 亚洲毛片视频| 日韩三级久久| 综合欧美精品| 蜜臀精品久久久久久蜜臀| 伊人久久亚洲美女图片| 99热国内精品| 另类中文字幕国产精品| 久久久精品日韩| 欧美.日韩.国产.一区.二区| 99久久久久| 91精品韩国| 欧美色图国产精品| 色婷婷狠狠五月综合天色拍| 国产日韩欧美一区二区三区| 日韩va亚洲va欧美va久久| 综合激情网站| 亚洲三级视频| 18国产精品| 国产欧美一区二区色老头| 国产精品久久久久久久免费软件 | 日韩在线短视频| 亚洲伦乱视频| 久久久蜜桃一区二区人| 最新日韩av| 日韩欧美久久| 欧美永久精品| 国产一区二区精品福利地址| 成人日韩精品| 日韩精品一级二级| 亚洲精品激情| 国产精品黄色片| 精品久久中文| 欧美搞黄网站| 亚洲精品乱码久久久久久蜜桃麻豆 | 欧美天堂在线| 国产精品探花在线观看| 国产精品成人自拍| 国产成人久久精品一区二区三区| 亚洲成av在线| 亚洲精选91| 精品女同一区二区三区在线观看| 久久国产主播| 日韩三区四区| 国产91欧美| 国产亚洲一级| 国产精品久久| 波多野结衣一区| 亚洲精品国产精品粉嫩| 麻豆精品视频在线| 久久激情av| 欧美黄页在线免费观看| 国产日韩中文在线中文字幕| 日本成人在线视频网站| 欧美99久久| 久久狠狠久久| 福利片在线一区二区| 精品在线播放| 国产日产一区| 99精品在线观看| 日韩精品视频网| 日韩精品电影| 日本在线视频一区二区| 国产不卡人人| 中文日韩在线| 丰满少妇一区| 在线精品视频一区| 国产一区二区三区久久| 欧美日韩国产一区精品一区| 欧美日韩国产一区二区在线观看| 日韩精品专区| 日韩在线观看中文字幕| 一区二区精品伦理...| 四虎精品永久免费| 视频一区视频二区中文| 99精品网站| 水蜜桃精品av一区二区| 久久的色偷偷| 精品一区三区| 999精品色在线播放| 国内精品美女在线观看| www.九色在线| 欧美 日韩 国产精品免费观看| 91视频久久| 综合激情在线| 日韩欧美一区二区三区在线观看| 亚洲女人av| 亚洲va中文在线播放免费| 91成人精品在线| 久久中文字幕二区| 国产一区二区亚洲| 久久精品99久久久| 免费视频最近日韩| 久久影院一区| 日韩精品视频网| 国产精品腿扒开做爽爽爽挤奶网站| 91日韩在线| 国产精品亚洲二区| 人人精品人人爱| 99热精品久久| 日韩成人免费| 牛牛精品成人免费视频| 日韩不卡免费视频| 国产麻豆久久| 精品视频在线观看网站| 日韩av资源网| 亚洲午夜久久| 噜噜噜久久亚洲精品国产品小说| 99成人在线视频| 麻豆高清免费国产一区| 欧美亚洲tv| 日韩av一区二区在线影视| 一区二区三区四区精品视频| 欧美日韩少妇| 99热精品久久| 国产精品成人a在线观看| 蜜桃精品视频| 欧美激情麻豆| 欧美激情aⅴ一区二区三区| 日韩不卡手机在线v区| 日韩精品视频在线看| 亚洲香蕉视频| 中文字幕一区二区三区四区久久| 欧美~级网站不卡| 日韩高清不卡| 日韩免费视频| 日韩大片在线| 91亚洲国产高清| 日本一区二区高清不卡| 久久不卡国产精品一区二区| 国产三级一区| 91精品国产自产精品男人的天堂| 美女久久一区| 美女久久一区| 91欧美极品| 国产999精品在线观看| 日韩精品亚洲专区| 国产综合婷婷| 精品视频网站| 成人片免费看| 综合激情五月婷婷| 黄色欧美日韩| 伊人久久av| 国产精品一区高清| 国产一区二区亚洲| 欧美午夜网站| 日韩欧美另类一区二区| 水蜜桃精品av一区二区| 蜜桃av一区二区| 另类小说一区二区三区| 好吊日精品视频| 国产精品资源| 国产视频一区欧美| 麻豆成人综合网| 日韩亚洲国产欧美| 亚洲一区二区三区四区五区午夜| 日韩精品一区二区三区中文在线 | 国产一区二区三区四区五区| 欧美福利在线| 精品高清久久| 日本欧美一区二区| 日韩免费看片| 日韩欧美四区| 亚洲国产专区| 国产欧美一区二区色老头| 国产一区二区三区视频在线| 色婷婷成人网| 国产精品老牛| 亚洲女同中文字幕| 国产精品视频首页| 蜜臀久久99精品久久久久宅男| 日本一区二区高清不卡| 日韩黄色av| 蜜桃视频一区二区三区在线观看| 99久久精品费精品国产| 国产欧美丝祙| 亚洲人成亚洲精品| 午夜在线一区二区| 一本一道久久a久久| 久久亚洲不卡| 亚洲一区av| 亚洲丝袜美腿一区| 欧美日韩水蜜桃|