java編碼gbk
『壹』 java中如何把GBK編碼的字元串轉成utf-8編碼
我先解釋一下我對你的問題的理解
:
你的問題有點籠統
可以這么理解兩個意思
:
一
,你是想吧一個gbk編碼的字元串用utf-8格式來編碼
String
s
=
new
String
("全國".getBytes("GBK"),"GBK");
雖然這個時候的s是GBK編碼的
但是s還是中文字元的
所以
上面這位同胞用
new(s.getBytes("GBK"),"UTF-8")的方式肯定是錯的
應該用
String
s1
=
new
String
(s.getBytes("UTF-8"),"UTF-8")
這樣s1就是UTF-8編碼的字元串了
二,如果是遇見亂碼問題
比如
String
s
=
new
String
("全國".getBytes("GBK"),"GBK");
這樣的s就是gbk編碼的
現在你要把GBK格式的編碼用UTF-8去編碼
肯定就會出現亂碼
String
s2
=
new
String(s.getBytes("GBK"),"UTF-8");
這個s2肯定是亂碼的
而且這樣就根本解不出來了
系統出現的亂碼顯示的時候才會出現編碼錯誤
所以
一般出現亂碼
只要把輸入流換個編碼解析一下就ok了
還有什麼不明白
可以問我
『貳』 java 怎麼判斷編碼是utf-8 還是gbk
你是要判斷字元還是判斷文件的編碼,若是字元:
String
str="123456";
String
type
=
"utf-8";
//更換這里進行其他編碼判斷
try
{
if
(str.equals(new
String(str.getBytes(type
),
type
)))
{
return
type;
}
}
catch
(Exception
e)
{
}
如果是文件,麻煩一些,可以使用一個開源項目cpdetector,這個我也沒用過,你自己查一下吧
『叄』 為什麼java的默認編碼不是utf-8 而是gbk
因為系統是中文語言的,得到的是GBK編碼,所以肯定不是utf的。
工具:
win7
jdk
方法:
在計算機上右鍵選擇屬性
『肆』 java中GBK編碼格式轉成UTF8,用一段方法實現怎麼做
java中GBK編碼格式轉成UTF8編碼格式的方法如下:
publicstaticvoidmain(String[]args)throwsThrowable{
StringerrStr="errStr";
System.out.println(recover(errStr));
}
publicstaticStringrecover(Stringstr)throwsThrowable{
returnnewString(str.getBytes("GBK"),"UTF-8");
}
其中errStr就是亂碼字元串,按照相反的順序在編碼(用gbk)、解碼(用utf-8)回去,就能得到正確的字元串.
GBK、UTF-8是一種「編碼格式」,是用來序列化或存儲「編號(數字)」的一種「格式」;GBK和UTF-8都是用來序列化或存儲unicode編碼的數據的,但是分別是2種不同的格式; 除了格式不一樣之外,所關心的unicode編碼范圍也不一樣,utf-8考慮了很多種不同國家的字元,涵蓋整個unicode碼表,所以其存儲一個字元的編碼的時候,使用的位元組長度也從1位元組到4位元組不等;而GBK只考慮中文——在unicode中的一小部分——的字元,的編碼,所以算好了只要2個位元組就能涵蓋到絕大多數常用中文(2個位元組能表示6w多種字元),所以存儲一個字元的時候,所用的位元組長度是固定的;
『伍』 java中GBK編碼格式轉成UTF8,用一段方法實現怎麼做
package url; import java.io.UnsupportedEncodingException; public class GBK2UTF8 { public static void main(String[] args) throws UnsupportedEncodingException { String chinese = 中型渣文;java內唯空部編碼 String gbkChinese = new String(chinese.getBytes(GBK),ISO-8859-1);轉換成gbk編碼 String unicodeChinese = new String(gbkChinese.getBytes(ISO-8859-1),GBK);java內部編碼 System.out.println(unicodeChinese);中文 String utf8Chinese = new String(unicodeChinese.getBytes(UTF-8),ISO-8859-1);utf--8編碼 System.out.println(utf8Chinese);亂卜山悄碼 unicodeChinese = new String(utf8Chinese.getBytes(ISO-8859-1),UTF-8);java內部編碼 System.out.println(unicodeChinese);中文 } }
『陸』 java中如何得到輸入的漢字的GBK編碼
/*
*Tochangethislicenseheader,.
*Tochangethistemplatefile,chooseTools|Templates
*andopenthetemplateintheeditor.
*/
packagecn.timecd.gyhhy.mscup;
importjava.io.UnsupportedEncodingException;
importjava.nio.charset.Charset;
importjava.util.Arrays;
importjava.util.logging.Level;
importjava.util.logging.Logger;
/**
*主要涉及到String類的getBytes方法
*@author32798
*/
publicclassTest{
publicstaticvoidmain(String[]args){
//預定義常量
Stringcharset="gbk";//編碼
//請注意,找不到編碼集的時候,下面這句代碼會拋出
//java.nio.charset.UnsupportedCharsetException
Charsetcharset$=Charset.forName(charset);//獲取編碼集
//只是閱讀:兩個變數名字比較,請注意區分
//charset
//charset$
//從string轉bytes
Stringstr="這是一個測試文本";
try{
//方法一:直接通過編碼集的名字轉碼
//需要try-catch
//當字元集找不到時會拋出java.io.UnsupportedEncodingException
System.out.println(Arrays.toString(str.getBytes(charset)));
}catch(){
Logger.getLogger(Test.class.getName()).log(Level.SEVERE,null,ex);
}
//方法二:瞎殲猜通過編碼集(java.nio.charset.Charset)轉碼
//不需要try-catch
System.err.println(Arrays.toString(str.getBytes(charset$)));
try{
Thread.sleep(200);//只是為了讓ide能按順序輸出
磨型}catch(InterruptedExceptionex){}
//從bytes轉string
//byte[]bytes={-78,-35,-60,-32,-62,-19};
byte[]bytes=str.getBytes(charset$);//只是為了獲取測試文本的gbk碼
System.out.print(" ");//隔出3行,免得跟之前的輸出混淆
try{
//方法一:通過編碼集名字新建一個string
//需要try-catch
//當字元集找不到時會拋出java.io.UnsupportedEncodingException
改族System.out.println(newString(bytes,charset));
}catch(){
Logger.getLogger(Test.class.getName()).log(Level.SEVERE,null,ex);
}
//方法二:直接通過字元集新建一個string
System.err.println(newString(bytes,charset$));
}
}
『柒』 如何使用Java代碼將GBK編碼格式的工程轉換為UTF-8編碼格式的工程
不寫代山備碼的話可以直接找個批量轉換文本編碼的逗配毀軟體搞定。
寫代碼稍微復雜一些。
新建一個目錄
遍歷遞歸原工程目錄,以gbk編碼讀取,以utf8編碼寫文件到新的目錄下即可。
手動重命名工程為 工程備份
手動重命名新目錄為賣梁 工程名
檢查無誤後刪除工程備份
『捌』 怎麼處理警告:編碼 GBK 的不可映射字元
輸入javac -encoding utf-8 文件名.java。就可以解決了。
當Java源代碼中包含中文字元時,我們在用javac編譯時會出現「錯誤:編碼GBK的不可映射字元」。
由於JDK是國際版的,我們在用javac編譯時,編譯程序首先會獲得我們操作系統默認採用的編碼格式(GBK),然後JDK就把Java源文件從GBK編碼格式轉換為Java內部默認的Unicode格式放入內存中,然後javac把轉換後的Unicode格式的文件編譯成class類文件。
此時,class文件是Unicode編碼的,它暫存在內存中,緊接著,JDK將此以Unicode格式編碼的class文件保存到操作系統中形成我們見到的class文件。當我們不加設置就編譯時,相當於使用了參數:javac -encoding GBK Test.java,就會出現不兼容的情況。
拓展資料:
javac 是java語言編程編譯器。全稱java compiler。javac工具讀由java語言編寫的類和介面的定義,並將它們編譯成位元組代碼的class文件。javac 可以隱式編譯一些沒有在命令行中提及的源文件。用 -verbose 選項可跟蹤自動編譯。當編譯源文件時,編譯器常常需要它還沒有識別出的類型的有關信息。對於源文件中使用、擴展或實現的每個類或介面,編譯器都需要其類型信息。這包括在源文件中沒有明確提及、但通過繼承提供信息的類和介面。
JDK(Java Development Kit)稱為Java開發包或Java開發工具,是一個編寫Java的Applet小程序和應用程序的程序開發環境。JDK是整個Java的核心,包括了Java運行環境(Java Runtime Envirnment),一些Java工具和Java的核心類庫(Java API)。不論什麼Java應用伺服器實質都是內置了某個版本的JDK。主流的JDK是Sun公司發布的JDK,除了Sun之外,還有很多公司和組織都開發了自己的JDK,例如,IBM公司開發的JDK,BEA公司的Jrocket,還有GNU組織開發的JDK
參考資料:網路-javac常見錯誤
『玖』 java 中文亂碼問題 utf-8和gbk的區別
Java中UTF-8轉GBK之所以不會出現中文亂碼,是因為UTF-8編碼為兼容性最大的字元集編碼,它本身就支持中文字元。
Java代碼轉碼範例:
String s = new String(ss.getBytes(),"GBK");
當你的內容本來就是正常的中文字元時,通過上面的語句轉為GBK編碼是不會有任何問題的,但如果你在轉碼之前的字元不是正確的中文字元,或者不是支持中文字元的字元集,那可能就會出現亂碼問題。
UTF-8(8-bit Unicode Transformation Format)是一種針對Unicode的可變長度字元編碼,又稱萬國碼。由Ken Thompson於1992年創建。現在已經標准化為RFC 3629。UTF-8用1到6個位元組編碼UNICODE字元。用在網頁上可以同一頁面顯示中文簡體繁體及其它語言(如英文,日文,韓文)。
在Java開發中,特別是web開發,亂碼是一種很常見而且很頭疼的問題,這常常是由於頁面端、服務端、資料庫等幾處所使用的字元不一致所致,故開發中,保持編碼一致, 往往能減少由於亂碼而帶來的時間浪費,是一件非常重要的事情。