<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
UTF-8是Unicode的一種實現方式,也就是它的位元組結構有特殊要求,所以我們說一個漢字的範圍是0X4E00到0x9FA5,是指unicode值,至於放在utf-8的編碼裡去就是由三個位元組來組織,所以可以看出unicode是給出一個字元的範圍,定義了這個字是碼值是多少,至於具體的實現方式可以有多種多樣來實現。
System.out.println(System.getProperty("file.encoding"));
更改編碼方式:settings->fileCoding->GlobalEncoding = GBK
輸出結果:
public static void print(String s) { for (byte aByte : s.getBytes()) { System.out.println(aByte); } System.out.println("----------------"); }
GBK編碼方式下,鍵盤在中文狀態
數位字母佔一個位元組,符號或者中文佔用兩個位元組
public static void main(String[] args) { String s1 = "2"; print(s1); String s2 = ";"; print(s2); String s3 = "方"; print(s3); String s4 = "23f方"; print(s4); }
gbk編碼方式下,鍵盤在英文狀態
字母數位佔,符號用1個位元組,中文佔用兩個位元組
public static void main(String[] args) { String s1 = "2"; print(s1); String s2 = ";"; print(s2); String s3 = "f"; print(s3); String s4 = "23f方"; print(s4); }
utf-8的方式下
中文,中文符號佔用3個位元組,英文符號佔用1個位元組,字母數位佔用1個位元組
public static void main(String[] args) { String s1 = "2"; print(s1); String s2 = ";"; print(s2); String s3 = "方"; print(s3); String s4 = "23f方"; print(s4); }
小結:
Unicode(統一碼、萬國碼、單一碼)是電腦科學領域裡的一項業界標準,包括字元集、編碼方案等。Unicode 是為了解決傳統的字元編碼方案的侷限而產生的,它為每種語言中的每個字元設定了統一併且唯一的二進位制編碼,以滿足跨語言、跨平臺進行文字轉換、處理的要求。1990年開始研發,1994年正式公佈。
Unicode是國際組織制定的可以容納世界上所有文字和符號的字元編碼方案。目前的Unicode字元分為17組編排,0x0000 至 0x10FFFF,每組稱為平面(Plane),而每平面擁有65536個碼位,共1114112個。然而目前只用了少數平面。UTF-8、UTF-16、UTF-32都是將數位轉換到程式資料的編碼方案。
通用字元集(Universal Character Set, UCS)是由ISO制定的ISO 10646(或稱ISO/IEC 10646)標準所定義的標準字元集。UCS-2用兩個位元組編碼,UCS-4用4個位元組編碼。
UTF-8以位元組為單位對Unicode進行編碼。
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字元編碼,又稱萬國碼,由Ken Thompson於1992年建立。現在已經標準化為RFC 3629。UTF-8用1到6個位元組編碼Unicode字元。
用在網頁上可以統一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)。
UTF-16編碼以16位元無符號整數為單位。
UTF-16是Unicode字元編碼五層次模型的第三層:字元編碼表(Character Encoding Form,也稱為 "storage format")的一種實現方式。即把Unicode字元集的抽象碼位對映為16位元長的整數(即碼元)的序列,用於資料儲存或傳遞。Unicode字元的碼位,需要1個或者2個16位元長的碼元來表示,因此這是一個變長表示。
UTF-16是Unicode的其中一個使用方式。 UTF是 Unicode TransferFormat,即把Unicode轉做某種格式的意思。
它定義於ISO/IEC 10646-1的附錄Q,而RFC2781也定義了相似的做法。
在Unicode基本多文種平面定義的字元(無論是拉丁字母、漢字或其他文字或符號),一律使用2位元組儲存。而在輔助平面定義的字元,會以代理對(surrogate pair)的形式,以兩個2位元組的值來儲存。UTF-16比起UTF-8,好處在於大部分字元都以固定長度的位元組 (2位元組) 儲存,但UTF-16卻無法相容於ASCII編碼。
UTF-32編碼以32位元無符號整數為單位。
Unicode的UTF-32編碼就是其對應的32位元無符號整數。
UTF-32 (或 UCS-4)是一種將Unicode字元編碼的協定,對每一個Unicode碼位使用恰好32位元元。其它的Unicode transformation formats則使用不定長度編碼。因為UTF-32對每個字元都使用4位元組,就空間而言,是非常沒有效率的。特別地,非基本多文種平面的字元在大部分檔案中通常很罕見,以致於它們通常被認為不存在佔用空間大小的討論,使得UTF-32通常會是其它編碼的二到四倍。雖然每一個碼位使用固定長定的位元組看似方便,它並不如其它Unicode編碼使用得廣泛。j
String gbkStr = "你好哦!"; //原始碼檔案是GBK格式,或者這個字串是從GBK檔案中讀取出來的, 轉換為string 變成unicode格式 //利用getBytes將unicode字串轉成UTF-8格式的位元組陣列 byte[] utf8Bytes = gbkStr.getBytes("UTF-8"); //然後用utf-8 對這個位元組陣列解碼成新的字串 String utf8Str = new String(utf8Bytes, "UTF-8");
簡化後就是:
unicodeToUtf8 (String s) { return new String( s.getBytes("utf-8") , "utf-8"); }
UTF-8 轉GBK原理也是一樣
return new String( s.getBytes("GBK") , "GBK");
java 獲取系統中預設的編碼
//方法一:中文作業系統中列印GBK System.out.println(System.getProperty("file.encoding")); //方法二:中文作業系統中列印GBK System.out.println(Charset.defaultCharset());
以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45