導航:首頁 > 編程語言 > javastring編碼gbk

javastring編碼gbk

發布時間:2024-07-11 00:25:17

Ⅰ 為什麼java的默認編碼不是utf-8 而是gbk

因為系統是中文語言的,得到的是GBK編碼,所以肯定不是utf的。

工具:

win7

jdk

方法:

  1. 在計算機上右鍵選擇屬性

Ⅱ 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開發,亂碼是一種很常見而且很頭疼的問題,這常常是由於頁面端、服務端、資料庫等幾處所使用的字元不一致所致,故開發中,保持編碼一致, 往往能減少由於亂碼而帶來的時間浪費,是一件非常重要的事情。

Ⅲ 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 String gbk編碼和c# String gbk 編碼難道不一樣

您好,提問者:
確實是不一樣的,這個時候給你一種也可用於.net對接的加密

/**
*加密方法
*@paramstr
*@return
*/
publicstaticStringencode(Stringstr){
//根據默認編乎賣碼獲取位元組數組
byte[]bytes=str.getBytes();
StringBuildersb=newStringBuilder(bytes.length*2);
//將位元組數組中每個位元組拆解成2位16進制整數
for(inti=0;i<bytes.length;i++){
sb.append(hexString.charAt((bytes[i]&0xf0)>>4));
sb.append(hexString.charAt((bytes[i]&0x0f)>>0));
}
returnsb.toString();
}

/**
*得到16進制的GBK編碼,轉換為漢字
*@paramhexStr
*@return
*/
publicstaticStringdecode(StringhexStr){
if(null==hexStr||"".equals(hexStr)||(hexStr.length())%2!=0){
returnnull;
}
intbyteLength=hexStr.length()/2;
byte[]bytes=newbyte[byteLength];
inttemp=0;
for(inti=0;i<byteLength;i++){
temp=hex2Dec(hexStr.charAt(2*i))*16+hex2Dec(hexStr.charAt(2*i+1));
bytes[i]=(byte)(temp<128?temp:temp-256);
}
returnnewString(bytes);
}
privatestaticStringhexString="0123456789ABCDEF";
privatestaticinthex2Dec(charch){
if(ch=='0')
return0;
if(ch=='1')
return1;
if(ch=='2')
return2;
if(ch=='3')
return3;
if(ch=='4')
return4;
if(ch=='5')
return5;
if(ch=='6')
return6;
if(ch=='7')
return7;
if(ch=='8')
return8;
if(ch=='9')
return9;
if(ch=='a')
return10;
if(ch=='A')
return10;
if(ch=='B')
return11;
if(ch=='b')
return11;
if(ch=='C'滾納)
return12;
if(ch=='c')
return12;
if(ch=='D')
return13;
if(ch=='d')
return13;
if(ch=='E'歲備逗)
return14;
if(ch=='e')
return14;
if(ch=='F')
return15;
if(ch=='f')
return15;
elsereturn-1;
}

Ⅳ 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編碼的字元串轉成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了 還有什麼不明白 可以問我

閱讀全文

與javastring編碼gbk相關的資料

熱點內容
幼兒編程教育培訓多少錢 瀏覽:401
經常生氣有什麼東西能解壓 瀏覽:900
代理伺服器地址和埠可以怎麼填 瀏覽:62
unity5手游編譯模型 瀏覽:264
安卓無人機app源碼 瀏覽:808
pl1編程語言 瀏覽:800
台達plc編程換算指令大全 瀏覽:174
手機上的編程游戲 瀏覽:108
伺服器密碼機有什麼用 瀏覽:477
dos磁碟命令 瀏覽:955
單片機cpu52的功能 瀏覽:691
opc伺服器怎麼開發 瀏覽:373
覓喜是個什麼app 瀏覽:402
加密cd機 瀏覽:946
社保用什麼app繳納 瀏覽:313
nodevlinux 瀏覽:582
騰訊tt伺服器怎麼登錄密碼 瀏覽:898
windows命令提示符 瀏覽:352
win7管理員許可權命令 瀏覽:729
地圖app哪個適合老年人用 瀏覽:74