導航:首頁 > 編程語言 > java字元轉碼

java字元轉碼

發布時間:2022-08-10 14:54:33

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如何把string轉為utf-8

java不同編碼之間進行轉換,都需要使用unicode作為中轉。

String str = "任意字元串";

str = new String(str.getBytes("gbk"),"utf-8");

備注說明:

str.getBytes("UTF-8"); 意思是以UTF-8的編碼取得位元組

new String(XXX,"UTF-8"); 意思是以UTF-8的編碼生成字元串

舉例:

public static String getUTF8XMLString(String xml) {

// A StringBuffer Object

StringBuffer sb = new StringBuffer();

sb.append(xml);

String xmString = "";

String xmlUTF8="";

try {

xmString = new String(sb.toString().getBytes("UTF-8"));

xmlUTF8 = URLEncoder.encode(xmString, "UTF-8");

System.out.println("utf-8 編碼:" + xmlUTF8) ;

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

// return to String Formed

return xmlUTF8;

(2)java字元轉碼擴展閱讀:

UTF-8編碼規則:

如果只有一個位元組則其最高二進制位為0;如果是多位元組,其第一個位元組從最高位開始,連續的二進制位值為1的個數決定了其編碼的位元組數,其餘各位元組均以10開頭。

實際表示ASCII字元的UNICODE字元,將會編碼成1個位元組,並且UTF-8表示與ASCII字元表示是一樣的。所有其他的UNICODE字元轉化成UTF-8將需要至少2個位元組。每個位元組由一個換碼序列開始。第一個位元組由唯一的換碼序列,由n位連續的1加一位0組成,首位元組連續的1的個數表示字元編碼所需的位元組數。

Unicode轉換為UTF-8時,可以將Unicode二進制從低位往高位取出二進制數字,每次取6位,如上述的二進制就可以分別取出為如下示例所示的格式,前面按格式填補,不足8位用0填補。

Ⅲ java文件讀取內容轉碼

讀取的文件流如果是read(讀取位元組流的時候,中文就會是亂碼)方法,所以現在全都是聽過readline方式進行的讀取。舉例:
可以通過BufferedReader 流的形式進行流緩存,之後通過readLine方法獲取到緩存的內容。
BufferedReader bre = null;
try {
String file = "D:/test/test.txt";
bre = new BufferedReader(new FileReader(file));//此時獲取到的bre就是整個文件的緩存流
while ((str = bre.readLine())!= null) // 判斷最後一行不存在,為空結束循環
{
System.out.println(str);//原樣輸出讀到的內容
};
bre.close(),//關閉流,否則bre流會一直存在,直到程序運行結束。

除此之外,java文件讀取的時候有中文就很出現亂碼,通常獲取到的文件中通常都是「iso8859-1」格式,需要轉換為「UTF-8」格式。
如:String str = new String(str.getByte("iso8859-1"),"UTF-8");進行下強制轉換後在進行讀取即可。
備註:通常格式有GBK、UTf-8、iso8859-1、GB2312,如果上面的強制轉換不成功,依次進行這些格式的嘗試,肯定是可以解決問題的。

Ⅳ java中字元亂碼轉化的問題

如果B接受編碼方式也不能更改為和A一致,那麼舉個例子
A GBK,B UTF-8
B獲取的內容亂碼,
String s=request.getParameter("欄位名");
這里s會亂碼,可以做如下轉換
byte[] bytes=s.getBytes(" B當前的編碼格式");
String s=new String(bytes,"A的編碼方式");
這個時候s就正常了

Ⅳ java字元串編碼的問題,如何轉碼才能正確顯示中文

String str = new String("暗示大家".getBytes(),"UTF-8");
重新用utf-8編碼

或者用
URLDecoder.decode("xxxxxx", "UTF-8");重新用utf-8解碼

望採納,謝謝

Ⅵ JAVA 轉碼問題

那個資料庫並不能自動地處理漢字,相當於它把所有數據當成單位元組來處理,因此,數據倒底是什麼取決於讀取它的程序如何理解,資料庫本身只負責保存byte而不是我們期望的char。


US7ASCII是單byte,而漢字是至少雙byte.


所以,如果不做任何轉換的話,處理過程中寫入和讀出都要使用相同的字元集才能理解它,但我們不應該依然資料庫伺服器和應用伺服器或操作系統的字元集是什麼,如果不做轉換就要求應用伺服器,操作系統,資料庫的操作系統這些地方都有一致的約定,而實際上這不現實,你不能要求客戶的機器按你的要求做,它們現在用 US7ASCII 就表示它們以前有其它系統也用這個資料庫,因此你不能再提出任何假設,只能自己用技術方法消化掉。


因此我們要在處理中將漢字保存到資料庫之前就事先轉換成純粹的ASCII字元串,像u0A0c啥的。String有一個叫codePoint的數字,它是UnicodeCodePoint,我們在判斷它是非ASCII字元時(>256)時通過翻譯把它變成u0A0C再保存,讀取時發現了u0A0C再翻譯回來。

這本身就是我們在保存Properties文件時做的那樣,記得Struts之類的那個PropertiesResourceBundle么,我們在命令行做native2ascii時就是這么做的,反編譯一下JDK的tools.jar裡面的那個類來看源碼,這個轉換其實很簡單的,我們把JDKnative2ascii功能嵌入到你的程序中,凡是可能包括漢字的欄位(比如,名字,地址,描述)都來一次轉換。


下面反編譯它,寫出(編碼過程特簡單),讀出(解碼過程略復雜)需要按長度來試探,並且在未讀取完整時把餘下的零頭先緩存起來,等後面幾個位元組讀取出來之後再拼起來嘗試是否是一個u 開頭的符號。當然就算看不明白也沒關系,把這段代碼的變數改個名字原樣貼到你的代碼中用就行了,只是我們需要修改那個 Main.class,因為它是命令行程序,有一個 System.exit() 調用需要去掉,另外把收集參數的地方改成我們直接傳入參數。


Ⅶ JAVA--字元串轉碼

String name = user.getName();
try {
name = URLEncoder.encode(name, "iso-8859-1");
} catch (UnsupportedEncodingException e) {

e.printStackTrace();
}
user.setName(name);

Ⅷ Java怎麼將字元串轉換為GB2312原編碼

@Test
publicvoidtest333(){
Stringa="青白";
try{
byte[]b=a.getBytes("GB2312");
System.out.println(bytesToHexFun1(b));

}catch(UnsupportedEncodingExceptione){
e.printStackTrace();
}
}
//將byte數組轉成16進制字元串
(byte[]bytes){
char[]HEX_CHAR={'0','1','2','3','4','5',
'6','7','8','9','a','b','c','d','e','f'};
//一個byte為8位,可用兩個十六進制位標識
char[]buf=newchar[bytes.length*2];
inta=0;
intindex=0;
for(byteb:bytes){//使用除與取余進行轉換
if(b<0){
a=256+b;
}else{
a=b;
}
buf[index++]=HEX_CHAR[a/16];
buf[index++]=HEX_CHAR[a%16];
}
returnnewString(buf);
}

中心思想就是先轉成GB2312的byte數組,再轉成16進制就可以了。

閱讀全文

與java字元轉碼相關的資料

熱點內容
pdf填色 瀏覽:145
ie運行java 瀏覽:637
單相空調壓縮機的構造 瀏覽:136
迅雷app的回收站在哪裡啊 瀏覽:595
加密技術的特點包括4點 瀏覽:561
pcre源碼包 瀏覽:67
崑山ug數控編程培訓 瀏覽:520
integer類源碼 瀏覽:819
java排序的時間復雜度 瀏覽:859
伺服器陣列卡壞了怎麼維修 瀏覽:537
shm演算法 瀏覽:520
可愛的程序員陸漓離開 瀏覽:608
如何把掃描文件做成pdf格式 瀏覽:626
php個性qq源碼 瀏覽:821
初學c語言顯示源未編譯 瀏覽:247
資產概況源碼 瀏覽:472
dos命令建文件夾命令 瀏覽:381
解壓的密碼htm被屏蔽 瀏覽:504
冬天太冷冰箱壓縮機不啟動怎麼辦 瀏覽:85
手機打開vcf需要什麼編譯器 瀏覽:912