javacharset
Ⅰ java採用什麼字元集
Java語言所使用的字元集是16位Unicode編碼。另外再介紹一些常見的字元集:
1、最早在dos下寫pascal的時候,就遇到ASCII字元集,後來還是dos下寫c,也是ascii字元集
特點:目前最通用的單位元組編碼字元集
表示:單位元組
最早ascii用7bit表示,總共能表示2^7=128個字元,後來擴展到8bit,就表示2^8=256個字元
2、GB2312又稱為GB2312-80字元集,全稱為《信息交換用漢字編碼字元集·基本集》,由原中國國家標准總局發布,1981年5月1日實施。
特點:當然是能表示99%的中國漢字,還包括拉丁字母、日文假名、希臘字母、俄文字母、漢語拼音符號、漢語注音字母等
表示:雙位元組
3、GBK是漢字編碼標准之一,全稱《漢字內碼擴展規范》,GBK 向下與GB2312編碼兼容,向上支持ISO10646.1國際標准。可以認為GBK是在GB2313基礎上通過內碼擴展出來的一個標准。
特點:完全兼容GB2312標准,支持國際標准ISO/IEC10646-1和國家標准GB13000-1中的全部中日韓漢字,並包含了BIG5編碼中的所有漢字
表示:雙位元組
4、Big5,台灣那邊使用比較多。
5、GB 18030,全稱是GB18030-2000《信息交換用漢字編碼字元集基本集的擴充》,是我國政府於2000年3月17日發布的新的漢字編碼國家標准,2001年8月31日後在中國市場上發布的軟體必須符合本標准。
特點:就是強大。覆蓋中文、日文、朝鮮語和中國少數民族文字。滿足中國大陸、香港、台灣、日本和韓國等東亞地區信息交換多文種、大字量、多用途、統一編碼格式的要求。並且與Unicode 3.0版本兼容,填補Unicode擴展字元字匯「統一漢字擴展A」的內容。並且與以前的國家字元編碼標准(GB2312,GB13000.1)兼容。
表示:單位元組、雙位元組、四位元組三種方式
6、Unicode野心更大(當然有一個國際統一標准當然是好事)
特點:Unicode是一種在計算機上使用的字元編碼。它為每種語言中的每個字元設定了統一並且唯一的二進制編碼,以滿足跨語言、跨平台進行文本轉換、處理的要求。
表示:utf-8,utf-16,utf-32
這里可能有點不好理解,舉個例子
首先,把unicode理解成對所有字元做了一個統一的編號,比如:「字」這個字元,編號是23383,這個是unicode定義的
但是,在計算機中,如何存儲這個編號呢?方式就有很多,存儲unicode的方式,就是utf-8,utf-16,utf-32
23383數值的16進製表示:0x5b57
utf-8用3個位元組來表示漢字,所以utf-8的表示為:0xE5AD97
utf-16用2個位元組來表示漢字,所以utf-16的表示為:0x5b57 剛好和數值是一樣的
utf-32用4個位元組來表示漢字,所以utf-32的表示為:0x00005b57 和數值是一樣的,不過浪費空間
7、再來講講utf-8,它是一種變長的字元集
表示:單位元組來表示字母,雙位元組來表示一些希臘字母,三位元組來表示漢字,當然也有四位元組的
這么做當然會增加表示和識別的難度,不過,可以節省空間。這也是為什麼utf-8在網路編碼中流行的原因。
Ⅱ Java中字元集有哪些呢
字元集(character set)是一個系統支持的所有抽象字元的集合。字元(character)就是各種文字和符號,包括國家文字、標點符號、圖形符號、數字等。
如果僅僅是抽象的字元集,其實是顧名思義的,但是我們常說的字元集,其實是指編碼字元集(coded character set),比如: Unicode、ASCII、GB2312、GBK等等。什麼是編碼字元集呢?編碼字元集是指,這個字元集里的每一個字元,都對應到唯一的一個代碼值,這些代碼值叫做代碼點(code point),可以看做是這個字元在編碼字元集里的序號,字元在給定的編碼方式下的二進制比特序列稱為代碼單元(code unit)。在Unicode字元集中,字母A對應的數值是十六進制下的0041,書寫時前面加U+,所以Unicode里A的代碼點是U+0041。
常見的編碼字元集有:
Unicode:也叫統一字元集,它包含了幾乎世界上所有的已經發現且需要使用的字元(如中文、日文、英文、德文等)。
ASCII:早期的計算機系統只能處理英文,所以ASCII也就成為了計算機的預設字元集,包含了英文所需要的所有字元。
GB2312:中文字元集,包含ASCII字元集。ASCII部分用單位元組表示,剩餘部分用雙位元組表示。
GBK:GB2312的擴展,完整包含了GB2312的所有內容。
GB18030:GBK字元集的超集,常叫大漢字字元集,也叫CJK(Chinese,Japanese,Korea)字元集,包含了中、日、韓三國語言中的所有字元。
學習相關java類知識,推薦來北京尚學堂,優秀的師資和科學的授課方式,會帶給你完美的學習體驗。
Ⅲ java 關於編碼charset ,pageEncoding ,characterEncoding是指什麼
都是指字元集編碼,
據我所知,charset是html網頁里用,pageEncoding是jsp里見到,characterEncoding我在mysql資料庫傳參數時見到過,不同場合而已。
字元在不同地方傳遞,免不了轉換,這些寫對了才能避免亂碼。
Ⅳ java中的Charset類,為什麽我們都是寫成字元串的形式
這沒什麼的,它只不過增加了一個字元串參數的構造函數而已
你寫一個類,默認的構造函數都是不帶參數的,但是你也可以增加若干個構造函數帶不同的參數,但是兩個構造函數傳得參數個數或者類型必須是不同的。
執行時會根據參數的不同,自動調用對應的構造函數
Ⅳ Java里怎樣設置Charset
1 默認的charset是當前操作系統使用的,通過 java.nio.Charset的方法
Charset.defaultCharset()
獲取。
2 在啟動JVM時,可以 使用 JVM參數 file.encoding 或者環境變數 JAVA_TOOLS_OPTIONS更改默認的charset。
java-Dfile.encoding=utf-8MainClass
或者
setJAVA_TOOLS_OPTIONS="-Dfile.encoding=UTF-8"
3 java IO 類,String等通過在構造方法,傳參數指定需要的Charset。查看:
https://docs.oracle.com/javase/7/docs/api/java/nio/charset/class-use/Charset.html
Ⅵ Java如何設置位元組序
軟體包 java.nio.charset 的描述
定義用來在位元組和 Unicode 字元之間轉換的 charset、解碼器和編碼器。
類名描述Charset 字元和位元組之間的命名映射關系
CharsetDecoder 把位元組解碼為字元
CharsetEncoder 把字元編碼為位元組
CoderResult 描述 coder 的結果
CodingErrorAction 描述檢測到編碼錯誤時所採取的操作
charset 是 16 位 Unicode 字元序列和位元組序列之間的命名映射關系,從某種意義上來說,在 RFC 2278 中對其進行了定義。解碼器 是把一個特定 charset 中的位元組轉換成字元的引擎,編碼器 是把字元轉換成位元組的引擎。編碼器和解碼器在位元組和字元緩沖區上操作。它們共同被稱為 coder。
Charset 類定義了為給定的 charset 創建 coder 的方法和檢索與某個 charset 相關的名稱的方法。它還定義了用於測試是否支持特定 charset 的靜態方法、通過名稱查找 charset 實例的靜態方法,以及構造一個包含目前 Java 虛擬機支持的每個 charset 的映射靜態方法。
大多數用戶不直接使用這些類;他們使用 String 類中存在的和 charset 有關的構造方法和方法,一起使用的還有 InputStreamReader 和 OutputStreamWriter 類,為了利用此包中定義的 charset 設施,所有這些類的實現都被重寫。為了在構造這些類的實例時顯式地指定 charset 對象,已經對 InputStreamReader 和 OutputStreamWriter 類做了一些更改。
通過在 java.nio.charset.spi 包中的 CharsetProvider 類中定義的介面,可提供對新 charset 的支持。
標准 charset
Java 平台的每一種實現都需要支持以下標准 charset。請參考該實現的版本文檔,查看是否支持其他 charset。這些可選 charset 的行為在不同的實現之間可能有所不同。
Charset描述US-ASCII 7 位 ASCII 字元,也叫作 ISO646-US、Unicode 字元集的基本拉丁塊
ISO-8859-1 ISO 拉丁字母表 No.1,也叫作 ISO-LATIN-1
UTF-8 8 位 UCS 轉換格式
UTF-16BE 16 位 UCS 轉換格式,Big Endian(最低地址存放高位位元組)位元組順序
UTF-16LE 16 位 UCS 轉換格式,Little-endian(最高地址存放低位位元組)位元組順序
UTF-16 16 位 UCS 轉換格式,位元組順序由可選的位元組順序標記來標識
UTF-8 charset 在 RFC 2279 中指定;它所基於的轉換格式在 ISO 10646-1 的 Amendment 2 中指定,並在 Unicode Standard 中也有所描述。
UTF-16 charset 在 RFC 2781 中指定;它們基於的轉換格式在 ISO10646-1 的 Amendment 1 中指定,並在 Unicode Standard 中也有所描述。
UTF-16 charset 使用 16 位量,因此對位元組順序敏感。在這些編碼中,流的位元組順序可以由 Unicode 字元 'FF' 所表示的初始位元組順序標記 來指示。按以下方式處理位元組順序標記:
進行解碼時,UTF-16BE 和 UTF-16LE charset 忽略位元組順序標記;進行編碼時,不寫入位元組順序標記。
進行解碼時,UTF-16 charset 解釋位元組順序標記,以指示流的位元組順序,但是如果沒有位元組順序標記,則默認使用 Big Endian;進行編碼時,使用 Big Endian 位元組順序並寫入 Big Endian 位元組順序標記。
在任何情況中,在解碼操作的開始讀取位元組順序標記時,將在結果字元序列中忽略該標記。位元組順序標記出現在輸入序列的第一個元素之後時,由於使用相同的代碼表示零寬度不間斷空格,所以不忽略該標記。
Java 虛擬機的每個實例都有默認的 charset,它可能是也可能不是某個標准 charset。
Ⅶ 如何獲取java源文件編碼格式
java中主要使用charset這個類來判斷文件的編碼格式,代碼如下:
packagecom.ghj.packageoftool;
importinfo.monitorenter.cpdetector.io.ASCIIDetector;
importinfo.monitorenter.cpdetector.io.ByteOrderMarkDetector;
importinfo.monitorenter.cpdetector.io.CodepageDetectorProxy;
importinfo.monitorenter.cpdetector.io.JChardetFacade;
importinfo.monitorenter.cpdetector.io.ParsingDetector;
importinfo.monitorenter.cpdetector.io.UnicodeDetector;
importjava.io.ByteArrayInputStream;
importjava.io.File;
importjava.io.InputStream;
importjava.net.URL;
importjava.nio.charset.Charset;
/**
*文件工具類
*
*@author高煥傑
*/
publicclassFileTool{
/**
*獲取本地文件的編碼格式
*
*@paramfile要判斷的文件編碼格式
*
*@author高煥傑
*/
(FilelocalFile){
/*
*cpDetector是探測器,它把探測任務交給具體的探測實現類的實例完成。
*cpDetector內置了一些常用的探測實現類,這些探測實現類的實例可以通過add方法加進來,如ParsingDetector、ByteOrderMarkDetector、JChardetFacade、ASCIIDetector、UnicodeDetector。
*cpDetector按照「誰最先返回非空的探測結果,就以該結果為准」的原則返回探測到的字元集編碼。cpDetector是基於統計學原理的,不保證完全正確。
*/
=CodepageDetectorProxy.getInstance();
codepageDetector.add(newParsingDetector(false));//ParsingDetector可用於檢查HTML、XML等文件或字元流的編碼,構造方法中的參數用於指示是否顯示探測過程的詳細信息,為false不顯示。
codepageDetector.add(JChardetFacade.getInstance());//JChardetFacade封裝了由Mozilla組織提供的JChardet,它可以完成大多數文件的編碼測定。所以,一般有了這個探測器就可滿足大多數項目的要求,如果你還不放心,可以再多加幾個探測器,比如下面的ASCIIDetector、UnicodeDetector等。
codepageDetector.add(newByteOrderMarkDetector());
codepageDetector.add(ASCIIDetector.getInstance());//ASCIIDetector用於ASCII編碼測定
codepageDetector.add(UnicodeDetector.getInstance());//UnicodeDetector用於Unicode家族編碼的測定
Charsetcharset=null;
try{
charset=codepageDetector.detectCodepage(localFile.toURI().toURL());
if(charset!=null){
returncharset.name();
}
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
}
/**
*獲得遠程URL文件的編碼格式
*
*@paramurl遠程文件的URL路徑
*
*@author高煥傑
*/
(URLurl){
/*
*cpDetector是探測器,它把探測任務交給具體的探測實現類的實例完成。
*cpDetector內置了一些常用的探測實現類,這些探測實現類的實例可以通過add方法加進來,如ParsingDetector、ByteOrderMarkDetector、JChardetFacade、ASCIIDetector、UnicodeDetector。
*cpDetector按照「誰最先返回非空的探測結果,就以該結果為准」的原則返回探測到的字元集編碼。cpDetector是基於統計學原理的,不保證完全正確。
*/
=CodepageDetectorProxy.getInstance();
codepageDetector.add(newParsingDetector(false));//ParsingDetector可用於檢查HTML、XML等文件或字元流的編碼,構造方法中的參數用於指示是否顯示探測過程的詳細信息,為false不顯示。
codepageDetector.add(JChardetFacade.getInstance());//JChardetFacade封裝了由Mozilla組織提供的JChardet,它可以完成大多數文件的編碼測定。所以,一般有了這個探測器就可滿足大多數項目的要求,如果你還不放心,可以再多加幾個探測器,比如下面的ASCIIDetector、UnicodeDetector等。
codepageDetector.add(ASCIIDetector.getInstance());//ASCIIDetector用於ASCII編碼測定
codepageDetector.add(UnicodeDetector.getInstance());//UnicodeDetector用於Unicode家族編碼的測定
Charsetcharset=null;
try{
charset=codepageDetector.detectCodepage(url);
if(charset!=null){
returncharset.name();
}
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
}
/**
*獲得文件流的編碼格式
*
*@paraminputStream文件流
*
*@author高煥傑
*/
(InputStreaminputStream){
/*
*cpDetector是探測器,它把探測任務交給具體的探測實現類的實例完成。
*cpDetector內置了一些常用的探測實現類,這些探測實現類的實例可以通過add方法加進來,如ParsingDetector、ByteOrderMarkDetector、JChardetFacade、ASCIIDetector、UnicodeDetector。
*cpDetector按照「誰最先返回非空的探測結果,就以該結果為准」的原則返回探測到的字元集編碼。cpDetector是基於統計學原理的,不保證完全正確。
*/
=CodepageDetectorProxy.getInstance();
codepageDetector.add(newParsingDetector(false));//ParsingDetector可用於檢查HTML、XML等文件或字元流的編碼,構造方法中的參數用於指示是否顯示探測過程的詳細信息,為false不顯示。
codepageDetector.add(JChardetFacade.getInstance());//JChardetFacade封裝了由Mozilla組織提供的JChardet,它可以完成大多數文件的編碼測定。所以,一般有了這個探測器就可滿足大多數項目的要求,如果你還不放心,可以再多加幾個探測器,比如下面的ASCIIDetector、UnicodeDetector等。
codepageDetector.add(ASCIIDetector.getInstance());//ASCIIDetector用於ASCII編碼測定
codepageDetector.add(UnicodeDetector.getInstance());//UnicodeDetector用於Unicode家族編碼的測定
Charsetcharset=null;
try{
charset=codepageDetector.detectCodepage(inputStream,0);
if(charset!=null){
returncharset.name();
}
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
}
/**
*獲得字元串的編碼格式
*
*@paramstringValue要判斷的文件編碼格式字元串
*
*@author高煥傑
*/
(StringstringValue){
/*
*cpDetector是探測器,它把探測任務交給具體的探測實現類的實例完成。
*cpDetector內置了一些常用的探測實現類,這些探測實現類的實例可以通過add方法加進來,如ParsingDetector、ByteOrderMarkDetector、JChardetFacade、ASCIIDetector、UnicodeDetector。
*cpDetector按照「誰最先返回非空的探測結果,就以該結果為准」的原則返回探測到的字元集編碼。cpDetector是基於統計學原理的,不保證完全正確。
*/
=CodepageDetectorProxy.getInstance();
codepageDetector.add(newParsingDetector(false));//ParsingDetector可用於檢查HTML、XML等文件或字元流的編碼,構造方法中的參數用於指示是否顯示探測過程的詳細信息,為false不顯示。
codepageDetector.add(JChardetFacade.getInstance());//JChardetFacade封裝了由Mozilla組織提供的JChardet,它可以完成大多數文件的編碼測定。所以,一般有了這個探測器就可滿足大多數項目的要求,如果你還不放心,可以再多加幾個探測器,比如下面的ASCIIDetector、UnicodeDetector等。
codepageDetector.add(ASCIIDetector.getInstance());//ASCIIDetector用於ASCII編碼測定
codepageDetector.add(UnicodeDetector.getInstance());//UnicodeDetector用於Unicode家族編碼的測定
Charsetcharset=null;
try{
InputStreaminputStream=newByteArrayInputStream(stringValue.getBytes());
charset=codepageDetector.detectCodepage(inputStream,3);
if(charset!=null){
returncharset.name();
}
}catch(Exceptione){
e.printStackTrace();
}
returnnull;
}
}
Ⅷ java中charset怎麼賦值
可以直接在開發工具中設置java文件的編碼:
eclipse文件編碼設置:
1. 點擊window。
2. 在列表最下點擊reference。
3. 在reference界面點擊Workspace
4. 在右邊的Tex file encoding點擊Other。
5. 選擇 GBK或者 UTF-8編碼即可。