導航:首頁 > 編程語言 > java編碼問題

java編碼問題

發布時間:2022-07-08 20:04:50

java後台怎麼解決編碼問題

不用實現和繼承,自己封裝就可以了,想要什麼轉換自己對應封裝方法就可以了,這樣自己用起來也方便點。再往上找了個例子,你看看希望能幫到你!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 轉換格式,Little-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";

/**
* 將字元編碼轉換成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);
}

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

/**
* 字元串編碼轉換的實現方法
*
* @param str
* 待轉換編碼的字元串
* @param oldCharset
* 原編碼
* @param newCharset
* 目標編碼
* @return
* @throws UnsupportedEncodingException
*/
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);
gbk = test.changeCharset(ascii, ChangeCharset.US_ASCII,
ChangeCharset.GBK);
System.out.println("再把ASCII碼的字元串轉換成GBK碼: " + gbk);
System.out.println();
String iso88591 = test.toISO_8859_1(str);
System.out.println("轉換成ISO-8859-1碼: " + iso88591);
gbk = test.changeCharset(iso88591, ChangeCharset.ISO_8859_1,
ChangeCharset.GBK);
System.out.println("再把ISO-8859-1碼的字元串轉換成GBK碼: " + gbk);
System.out.println();
String utf8 = test.toUTF_8(str);
System.out.println("轉換成UTF-8碼: " + utf8);
gbk = test.changeCharset(utf8, ChangeCharset.UTF_8, ChangeCharset.GBK);
System.out.println("再把UTF-8碼的字元串轉換成GBK碼: " + gbk);
System.out.println();
String utf16be = test.toUTF_16BE(str);
System.out.println("轉換成UTF-16BE碼:" + utf16be);
gbk = test.changeCharset(utf16be, ChangeCharset.UTF_16BE,
ChangeCharset.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, ChangeCharset.UTF_16LE,
ChangeCharset.GBK);
System.out.println("再把UTF-16LE碼的字元串轉換成GBK碼: " + gbk);
System.out.println();
String utf16 = test.toUTF_16(str);
System.out.println("轉換成UTF-16碼:" + utf16);
gbk = test.changeCharset(utf16, ChangeCharset.UTF_16LE,
ChangeCharset.GBK);
System.out.println("再把UTF-16碼的字元串轉換成GBK碼: " + gbk);
String s = new String("中文".getBytes("UTF-8"), "UTF-8");
System.out.println(s);
}
}

❷ 關於java 編碼問題,為什麼運行不行

file.encoding指的是main函數入口的那個文件的編碼,如果你設置CharCode.java文件的代碼為GBK(edit-->set
encoding
-->other),那麼輸出的file.encoding就為GBK,如果設置的是iso8859-1,那麼輸出地file.encoding就為iso8859-1,如果是iso8859-1,那麼你是CharCode.java文件里的代碼里是輸不進去中文的。

❸ java關於字元編碼的問題!!

首先你要知道iso 8859-1是ASCII碼的升級版。ASCII碼的表示範圍是0-127也就是單位元組編碼。
iso8859-1表示的范圍是0-255 也是單位元組編碼.ascii碼的-128~-1是不表東西的。iso8859-1和gbk都是單位元組編碼。所以是無法存儲中文的。但可以存儲英文。字元.
至於你說的unicode是但你這個程序有國際化的時候才用unicode編碼.而本地碼.只要是中文的系統運行。都可以用的。而且不會報錯。

再說一點的。也是當時我學郁悶我老長時間的問題。為什麼我存的是GB2312以Unicode取的時候會是亂碼. 存的是unicode,以gb2312取又是? 其實你只要知道記住一點。你存的時候是什麼編碼存的。取的時候一定一定要以什麼編碼進行。也就是存取編碼一定要一樣。你記住這個就行。以後主要遇到編碼的。你一定要想清楚你存的時候是怎麼存的。然後取的時候一定要以你原來存的取!!!

❹ java 中編碼解碼問題

new String(strLine.getBytes("iso8859-1"),"gb2312")
其實這里很好明白
首先將字元串轉換成byte數組。。以iso8859-1的編碼來轉換。。
然後使用new String創建一個新字元串,前面帶上byte[]數組 後面帶上他的具體編碼。。
一般轉碼都使用這樣的方式。。JSP里經常出現亂碼的
都是加上過濾器然後中間使用這個new String(strLine.getBytes("iso8859-1"),"gb2312")方式將編碼轉換。
請採納答案,支持我一下。

❺ JAVA 字元串 位元組 編碼問題 高手來

1.
編程序的時候如果:String
str="中文";在存成文件時,需要把這段文字存為數據(每個位元組byte=8bit),即要編碼,按照不同的編碼方式(比如gb2312或者unicode),所以保存文件的時候需要指定編碼,一般編輯器默認跟系統一致。java編譯器,將源程序編碼時,採用的是unicode編碼方式,所以存在class文件中的位元組碼里的中文常量也是unicode的。這是源程序
2.
在程序處理時,你如果想把str="中文",以一定的編碼方式變成存儲時的數據(byte數組),就需要str.getBytes("encoding"),同理,你從文件或者其他地方讀取到數據後,想轉換成字元串,那麼你就要知道他之前是用什麼編碼方式變成的數據,然後用new
String(bytes,
"encoding")
就可以了。

❻ JAVA編碼轉換問題

其實你的轉換是可以的。但是系統顯示以當前文件編碼 為標准。所以看到不對文字。如果你轉成文件編碼形式肯定能顯示的。 修改main方法 :如下

public static String code2code(String strIn, String sourceCode,
String targetCode) {
String strOut = null;
if (strIn == null || (strIn.trim()).equals(""))
return strIn;
try {
byte[] b = strIn.getBytes(sourceCode);
for (int i = 0; i < b.length; i++) {
System.out.print(b[i] + " ");
}
System.out.println(b.toString());
System.out
.println("--------------------------------------------------------");
strOut = new String(b, targetCode);
} catch (Exception e) {
e.printStackTrace();
return null;
}
return strOut;
}
public static void main(String[] args) {
// System.out.println(new Test().convertStringSms("公司業務"));
String s = "金";
System.out.println(s);
String text = code2code(s, "utf-8",System.getProperty("file.encoding"));
System.out.println(text);
//System.out.println(code2code(text, "UTF-8", "GBK"));
//System.out.println(System.getProperty("file.encoding"));
}

我本軍團為你解答

❼ Java編碼問題。

s1隻是棧內存里的一個變數,是個地址,它指向你new出來的變數,存放在堆內存里,是gb2312的

❽ Java編碼問題

f (條件表達式1){
} else{
// 這里語句執行的條件是 條件表達式1的結果是false
}
----------------------------------------------------------------------------

if(條件表達式2){
//如果條件表達式2為ture,下面的代碼不會執行
}else if(條件表達式3){
// 條件表達式3是在條件表達式2為false時才會執行的判斷
//如果條件表達式3為ture,下面的代碼不會執行
}else if(條件表達式4){
// 條件表達式4是在條件表達式2和條件表達式4都為false時才會執行的判斷
}

❾ JAVA 編碼問題

反了吧,估計孫鑫用的是英文系統,不管他用的什麼系統,從代碼上看,反正他的默認編碼是ISO-8859-1,你的默認編碼是GBK,所以會不一樣。
我這也是中文的試了下和你的輸出是一樣的。你可以換成英文環境試試,或者改變下自己的默認編碼。

❿ java編碼問題,GBK轉化為UTF-8

首先理解java的字元概念
java中字元串是字元的序列,虛擬機內部的字元都是16位的unicode字元,等價於C++中的WCHAR,也是為了實現虛擬機方便

WCHAR叫做寬字元,對應的MuitiChar叫做多字元,這種多字元中字元的位數不唯一

GBK 和 UTF8 是多字元的不同編碼形式

s=new String(s.getBytes("gbk"),"utf-8");
的意思是:
byte[] bytes=s.getBytes("gbk");
s=new String(bytes,"utf-8");

第一句是將s對應的gbk編碼轉出來,形成一個位元組流
第二句是將這個位元組流按照utf-8編碼轉為java字元串,因此相當於將gbk編碼的位元組流當做utf-8來使用,這樣在中文中會出現亂碼

你的問題是,介面返回的已經是utf-8 所以它必須是byte[] 流,如果是字元串的話就不好辦了

閱讀全文

與java編碼問題相關的資料

熱點內容
同城公眾源碼 瀏覽:474
一個伺服器2個埠怎麼映射 瀏覽:282
java字元串ascii碼 瀏覽:59
台灣雲伺服器怎麼租伺服器 瀏覽:460
旅遊手機網站源碼 瀏覽:315
android關聯表 瀏覽:929
安卓導航無聲音怎麼維修 瀏覽:320
app怎麼裝視頻 瀏覽:423
安卓系統下的軟體怎麼移到桌面 瀏覽:80
windows拷貝到linux 瀏覽:753
mdr軟體解壓和別人不一樣 瀏覽:886
單片機串列通信有什麼好處 瀏覽:324
游戲開發程序員書籍 瀏覽:848
pdf中圖片修改 瀏覽:275
匯編編譯後 瀏覽:478
php和java整合 瀏覽:833
js中執行php代碼 瀏覽:447
國產單片機廠商 瀏覽:62
蘋果手機怎麼設置不更新app軟體 瀏覽:289
轉行當程序員如何 瀏覽:498