① java怎麼把UTF-8字元串轉成GBK字元串
java不同編碼之間進行轉換,都需要使用unicode作為中轉。
以utf-8轉gbk為例,示例代碼如下:
Stringt="這是一個字元串aaa111";
Stringutf8=newString(t.getBytes("UTF-8"));
System.out.println(utf8);
Stringunicode=newString(utf8.getBytes(),"UTF-8");
System.out.println(unicode);
Stringgbk=newString(unicode.getBytes("GBK"));
System.out.println(gbk);
② java里關於String的編碼與解碼
從語言編碼的角度,getBytes(charset)不是解碼、也不是編碼,是轉換。API 說的是針對數據的角度。把一個整體的String分解成byte[]了。
byte[] b2=s.getBytes("gbk");
String ss=new String(b2,"utf-8");
從GBK轉換成UTF-8。
UTF8包含更多的文字量。
③ 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的默認編碼不是utf-8 而是gbk
因為系統是中文語言的,得到的是GBK編碼,所以肯定不是utf的。
工具:
win7
jdk
方法:
在計算機上右鍵選擇屬性
⑤ java 怎麼gbk轉碼utf-8
方法一:
思路:先轉為Unicode,然後轉為GBK
Stringutf8=newString(t.getBytes("UTF-8"));
System.out.println(utf8);
Stringunicode=newString(utf8.getBytes(),"UTF-8");
System.out.println(unicode);
Stringgbk=newString(unicode.getBytes("GBK"));
System.out.println(gbk);
方法二:
publicstaticvoidmain(String[]args){
Stringstr="字元串編碼轉換";
try{
byte[]temp=str.getBytes("utf-8");//這里寫原編碼方式
byte[]newtemp=newString(temp,"utf-8").getBytes("gbk");//這里寫轉換後的編碼方式
StringnewStr=newString(newtemp,"gbk");//這里寫轉換後的編碼方式
System.out.println(newStr);
}catch(UnsupportedEncodingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
}
⑥ 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了
還有什麼不明白
可以問我