當前位置:首頁 » 編程語言 » javagbk

javagbk

發布時間: 2022-05-08 21:18:22

A. 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多種字元),所以存儲一個字元的時候,所用的位元組長度是固定的;

B. java中怎麼顯示GBK

publicstaticvoidmain(String[]args){
try{
Stringa="肖";
byte[]b=a.getBytes("GBK");
for(bytebt:b){
System.out.println(Integer.toHexString(bt));
}
}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}
}

輸出結果:

ffffffd0
ffffffa4

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

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

工具:

win7

jdk

方法:

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

D. 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,這個我也沒用過,你自己查一下吧

E. java中如何把utf-8轉化成gbk

java中把utf-8轉化成gbk:

①選中要改變編碼的項目或文件,滑鼠右擊,選擇【properties】。

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

G. Java中如何將gbk裝換為ansi

對於java,在字元集間進行轉換時比較常用的功能,尤其在web應用中。
首先我們要先了解一些知識點:
一、關鍵技術點:
1、當前流行的字元編碼格式有:US-ASCII、ISO-8859-1、UTF-8、UTF-16BE、UTF-16LE、UTF-16、GBK、GB2312等,其中GBK、GB2312是專門處理中文編碼的。
2、String的getBytes方法用於按指定編碼獲取字元串的位元組數組,參數指定了解碼格式,如果沒有指定解碼格式,則按系統默認編碼格式。
3、String的「String(bytes[] bs, String charset)」構造方法用於把位元組數組按指定的格式組合成一個字元串對象
二、下面是一個完整的例子,包括了你提問中的gbk轉ascii,同時也提供了一些其他字元集間的轉碼方式,可留存備查:
public class ChangeCharset {
/** 7位ASCII字元,也叫作ISO646-US、Unicode字元集的基本拉丁塊 */
public static final String US_ASCII = "US-ASCII";
/** ISO拉丁字母表 No.1,也叫做ISO-LATIN-1 */
public static final String ISO_8859_1 = "ISO-8859-1";
/** 8 位 UCS 轉換格式 */
public static final String UTF_8 = "UTF-8";
/** 16 位 UCS 轉換格式,Big Endian(最低地址存放高位位元組)位元組順序 */
public static final String UTF_16BE = "UTF-16BE";
/** 16 位 UCS 轉換格式,Litter Endian(最高地址存放地位位元組)位元組順序 */
public static final String UTF_16LE = "UTF-16LE";
/** 16 位 UCS 轉換格式,位元組順序由可選的位元組順序標記來標識 */
public static final String UTF_16 = "UTF-16";
/** 中文超大字元集 **/
public static final String GBK = "GBK";

public static final String GB2312 = "GB2312";

/** 將字元編碼轉換成US-ASCII碼 */
public String toASCII(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, US_ASCII);
}

/** 將字元編碼轉換成ISO-8859-1 */
public String toISO_8859_1(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, ISO_8859_1);
}

/** 將字元編碼轉換成UTF-8 */
public String toUTF_8(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_8);
}

/** 將字元編碼轉換成UTF-16BE */
public String toUTF_16BE(String str) throws UnsupportedEncodingException{
return this.changeCharset(str, UTF_16BE);
}

/** 將字元編碼轉換成UTF-16LE */
public String toUTF_16LE(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_16LE);
}

/** 將字元編碼轉換成UTF-16 */
public String toUTF_16(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, UTF_16);
}

/** 將字元編碼轉換成GBK */
public String toGBK(String str) throws UnsupportedEncodingException {
return this.changeCharset(str, GBK);
}

/** 將字元編碼轉換成GB2312 */
public String toGB2312(String str) throws UnsupportedEncodingException {
return this.changeCharset(str,GB2312);
}

/**
* 字元串編碼轉換的實現方法
* @param str 待轉換的字元串
* @param newCharset 目標編碼
*/
public String changeCharset(String str, String newCharset) throws UnsupportedEncodingException {
if(str != null) {
//用默認字元編碼解碼字元串。與系統相關,中文windows默認為GB2312
byte[] bs = str.getBytes();
return new String(bs, newCharset); //用新的字元編碼生成字元串
}
return null;
}

/**
* 字元串編碼轉換的實現方法
* @param str 待轉換的字元串
* @param oldCharset 源字元集
* @param newCharset 目標字元集
*/
public String changeCharset(String str, String oldCharset, String newCharset) throws UnsupportedEncodingException {
if(str != null) {
//用源字元編碼解碼字元串
byte[] bs = str.getBytes(oldCharset);
return new String(bs, newCharset);
}
return null;
}

public static void main(String[] args) throws UnsupportedEncodingException {
ChangeCharset test = new ChangeCharset();
String str = "This is a 中文的 String!";
System.out.println("str:" + str);

String gbk = test.toGBK(str);
System.out.println("轉換成GBK碼:" + gbk);
System.out.println();

String ascii = test.toASCII(str);
System.out.println("轉換成US-ASCII:" + ascii);
System.out.println();

String iso88591 = test.toISO_8859_1(str);
System.out.println("轉換成ISO-8859-1碼:" + iso88591);
System.out.println();

gbk = test.changeCharset(iso88591, ISO_8859_1, GBK);
System.out.println("再把ISO-8859-1碼的字元串轉換成GBK碼:" + gbk);
System.out.println();

String utf8 = test.toUTF_8(str);
System.out.println();
System.out.println("轉換成UTF-8碼:" + utf8);
String utf16be = test.toUTF_16BE(str);
System.out.println("轉換成UTF-16BE碼:" + utf16be);
gbk = test.changeCharset(utf16be, UTF_16BE, GBK);
System.out.println("再把UTF-16BE編碼的字元轉換成GBK碼:" + gbk);
System.out.println();

String utf16le = test.toUTF_16LE(str);
System.out.println("轉換成UTF-16LE碼:" + utf16le);
gbk = test.changeCharset(utf16le, UTF_16LE, GBK);
System.out.println("再把UTF-16LE編碼的字元串轉換成GBK碼:" + gbk);
System.out.println();

String utf16 = test.toUTF_16(str);
System.out.println("轉換成UTF-16碼:" + utf16);
String gb2312 = test.changeCharset(utf16, UTF_16, GB2312);
System.out.println("再把UTF-16編碼的字元串轉換成GB2312碼:" + gb2312);
}

}

H. 用Java編程時,總是顯示我的注釋錯誤,說是編碼gbk的不可映射字元,可以這些都在注釋里為什麼會錯

這是因為:由於JDK是國際版的,在編譯的時候,如果我們沒有用-encoding參數指定我們的JAVA源程序的編碼格式,則javac.exe首先獲得我們操作系統默認採用的編碼格式,也即在編譯java程序時,若我們不指定源程序文件的編碼格式,JDK首先獲得操作系統的file.encoding參數(它保存的就是操作系統默認的編碼格式,如WIN2k,它的值為GBK),然後JDK就把我們的java源程序從file.encoding編碼格式轉化為JAVA內部默認的UNICODE格式放入內存中。然後,javac把轉換後的unicode格式的文件進行編譯成.class類文件,此時.class文件是UNICODE編碼的,它暫放在內存中,緊接著,JDK將此以UNICODE編碼的編譯後的class文件保存到我們的操作系統中形成我們見到的.class文件。對我們來說,我們最終獲得的.class文件是內容以UNICODE編碼格式保存的類文件,它內部包含我們源程序中的中文字元串,只不過此時它己經由file.encoding格式轉化為UNICODE格式了。當我們不加設置就編譯時,相當於使用了參數:javac -encoding gbk XX.java,當然就會出現不兼容的情況。

解決辦法是:應該使用-encoding參數指明編碼方式:javac -encoding UTF-8 XX.java,這下沒警告了,運行也正確了在JCreator 4中設置:菜單:Configure --> Options --> JDK Tools --> Compiler,選中<Default>,然後選Edit,Parameters裡面,最前面添加:-encoding UTF-8。

Parameters原來的

默認值為:-classpath "$[ClassPath]" -d "$[OutputPath]" $[ModJavaFiles]

修改後為:-encoding UTF-8 -classpath "$[ClassPath]" -d "$[OutputPath]" $[ModJavaFiles]

I. 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了
還有什麼不明白
可以問我

J. 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);
熱點內容
如何在別人的伺服器加模組 發布:2024-05-20 21:28:29 瀏覽:60
伺服器的bios晶元電腦店有嗎 發布:2024-05-20 21:28:26 瀏覽:223
剪輯電影什麼配置 發布:2024-05-20 21:25:17 瀏覽:818
解壓神器中的詭異事件 發布:2024-05-20 21:17:59 瀏覽:7
星火草原系統源碼 發布:2024-05-20 21:12:44 瀏覽:767
c編譯器手機版中文版下載 發布:2024-05-20 21:11:56 瀏覽:777
存儲超融合 發布:2024-05-20 21:07:24 瀏覽:455
孩子培訓編程 發布:2024-05-20 21:05:57 瀏覽:455
linux伺服器源碼 發布:2024-05-20 21:05:00 瀏覽:400
javaread 發布:2024-05-20 20:51:52 瀏覽:789