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

javastring重新編碼

發布時間:2023-12-07 19:56:28

java對String進行json編碼 實現類似與PHP中json_encode 方法的功能

一,json_encode作用:
json_encode — 對變數進行 JSON 編碼。
說明:string json_encode ($value ),返回 value 值的 JSON 形式。
參數:待編碼的 value ,除了resource 類型之外,可以為任何數據類型
該函數只能接受 UTF-8 編碼的數據(譯註:指字元/字元串類型的數據)
返回值:編碼成功則返回一個以 JSON 形式表示的 string 。
二,客戶端用java語言解碼:
方法一:
public String unescapeUnicode(String str){
StringBuffer b=new StringBuffer();
Matcher m = Pattern.compile("\\\\u([0-9a-fA-F]{4})").matcher(str);
while(m.find())
b.append((char)Integer.parseInt(m.group(1),16));
return b.toString();
}

方法二:
直接使用unescapeUnicode()方法解碼就可以了。
使用 json_simple.jar 包解析
下載地址:http://code.google.com/p/json-simple/downloads/list
JSON.simple是一個簡單的Java類庫,用於解析和生成JSON文本。不依賴於其它類庫,性能高。
Object obj=JSONValue.parse(jsonStr);
return obj.toString();

② java怎麼把utf-8的字元串轉換為gb2312格式

Java中字元串轉碼,根據實際運用的環境有以下三種方式

1、使用Java.lang.String

這是最常用的方法,先用對應編碼獲取位元組,然後重新構造新編碼,示例代碼如下:

Strings="清山";
byte[]b=s.getBytes("utf-8");//編碼
Stringsa=newString(b,"gb2312");//解碼:用什麼字元集編碼就用什麼字元集解碼

2、java.io.InputStreamReader/OutputStreamWriter:橋轉換

讀寫文件的應用中,可以使用這種方式,直接在IO流構造中轉換,示例代碼如下:

InputStreamis=newFileInputStream("C:/項目進度跟蹤.txt");//文件讀取
InputStreamReaderisr=newInputStreamReader(is,"utf-8");//解碼
OutputStreamos=newFileOutputStream("C:/項目進度跟蹤_gb2312.txt");//文件輸出
OutputStreamWriterosw=newOutputStreamWriter(os,"gb2312");//開始編碼

3、java.nio.Charset

使用nio中的Charset轉換字元,示例代碼如下:

CharsetinSet=Charset.forName("utf-8");//解碼字元集
CharsetoutSet=Charset.forName("gb2312");//編碼字元集
CharsetDecoderde=inSet.newDecoder();//解碼器
CharsetEncoderen=outSet.newEncoder();//編碼

③ JAVA 的字元串的編碼轉換問題

在服務端new String("login||一區||一臉||2238||".getBytes("gb2312"),"ISO8859_1"); JSP頁面輸出時,也要注意編碼的設置。

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

@Test
publicvoidtest333(){
="青白";
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中如果字元串被改變了編碼格式,該怎麼樣將它還原回來呢

UTF-8
在裝換成
gb2312
的是,信息已經丟失了,不可能在正常的轉換回去的
只能通過設置正確的編碼方式來
獲取
正確的文件內容

⑥ java里關於String的編碼與解碼

public byte[] getBytes(String charsetName)
使用指定的字元集將此String編碼為byte序列,結果存在一個byte數組中
public String(byte[] bytes, String charsetName)
通過使用指定的 charset 解碼指定的 byte 數組,構造一個新的 String。

網路傳輸中,信息都是以位元組序列的方式傳輸的。所以,發送方的String要按照某種編碼方式(如UTF-8,GBK)編碼為位元組序列,在網路中傳輸後,接收方取得這個位元組序列,按照相同的編碼方式將位元組序列解碼為String。

請看下面的代碼片段:

String name = "張三";

byte[] b1 = name.getBytes("UTF-8");
String name1 = new String(b1, "UTF-8"); //編碼解碼相同,正常顯示
System.out.println(name1);
String name2 = new String(b1, "GBK"); //編碼解碼不同,亂碼
System.out.println(name2);

byte[] b2 = name.getBytes("GBK");
String name3 = new String(b2, "GBK"); //編碼解碼相同,正常顯示
System.out.println(name3);
String name4 = new String(b2, "UTF-8"); //編碼解碼不同,亂碼
System.out.println(name4);

至於你的那個情況,要先用gbk編碼,然後再用utf-8解碼才能獲得正常的字元串,我估計是因為
1.傳輸過來的位元組碼是用utf-8編碼的,假設位元組碼為b。
2.你獲得的那個字元串,假設為s,是用gbk對b進行解碼獲得的字元串,所以是亂碼。
3.你使用gbk對s進行編碼,用gbk解碼之後再編碼,於是獲得了原來的b。
4.你使用utf-8解碼,所以獲得了正常的字元串。
簡單的說: b -> (gbk解碼) -> 亂碼 -> [此處開始是你做的](gbk編碼) -> b -> (utf-8解碼) -> 正常字元串

研究完編碼收獲會不小的,對以後理解Java的輸入輸出(尤其是網路通信和文件讀寫)都很有幫助。

⑦ java中如何修改字元串編碼

假設你的字元串的位元組數組是buf,按照GBK解析這個字元串的方法就是如下內
String
str=new
String(buf,0,buf.length,"GBK");
如果是utf-8編碼,就把GBK換成utf-8即可容

⑧ java怎樣實現將GB2312編碼的字元串轉換為ISO-8859-1編碼的字元串

通過JDK1.6知道String類中getBytes(」編碼「)方法可以講一個數用指定的編碼轉成一個位元組數組,String中通過指定的 charset解碼指定的 byte 數組,構造一個新的String。代碼如下:

try{

String s = "java學習";

System.out.println(s);

String result = new String(s.getBytes("GB2312"),"iso-8859-1");

System.out.println(s);

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

(8)javastring重新編碼擴展閱讀:

getBytes() 方法有兩種形式:

1、getBytes(String charsetName):使用指定的字元集將字元串編碼為 byte 序列,並將結果存儲到一個新的 byte 數組中。

2、getBytes():使用平台的默認字元集將字元串編碼為 byte 序列,並將結果存儲到一個新的 byte 數組中。

參考資料:

網路-getBytes()

⑨ java中文亂碼,能說下string.getBytes()和new String()轉碼是,具體點。

1、Java中,【String.getBytes(String decode)】的方法,會根據指定的decode,編碼返回某字元串在該編碼下的byte數組表示,例如:

byte[] b_gbk = "中".getBytes("GBK");
byte[] b_utf8 = "中".getBytes("UTF-8");
byte[] b_iso88591 = "中".getBytes("ISO8859-1")

上面三行代碼表示:分別返回「中」這個漢字在GBK、UTF-8和ISO8859-1編碼下的byte數組表示,此時b_gbk的長度為2,b_utf8的長度為3,b_iso88591的長度為1。

2、而通過【new String(byte[], decode)】的方式來還原這個「中」字時,實際是使用decode指定的編碼來將byte[ ]解析成字元串,例如:

String s_gbk = new String(b_gbk,"GBK");
String s_utf8 = new String(b_utf8,"UTF-8");
String s_iso88591 = new String(b_iso88591,"ISO8859-1");

s_gbk和s_utf8都是「中」,而只有s_iso88591是一個不認識 的字元,因為ISO8859-1編碼的編碼表中,根本就沒有包含漢字字元,當然也就無法通過"中".getBytes("ISO8859-1")。

因此,通過【String.getBytes(String decode)】方法來得到byte[ ]時,要確定decode的編碼表中確實存在String表示的碼值,這樣得到的byte[ ]數組才能正確被還原。

(9)javastring重新編碼擴展閱讀

java中文編碼避免亂碼

1、為了讓中文字元適應某些特殊要求(如http header頭要求其內容必須為iso8859-1編碼),可能會通過將中文字元按照位元組方式來編碼的情況,比如:

String s_iso88591 = new String("中".getBytes("UTF-8"),"ISO8859-1")

2、上述例子中的s_iso8859-1字元串實際是三個在 ISO8859-1中的字元,在將這些字元傳遞到目的地後,目的地程序再通過相反的方式:

String s_utf8 = new String(s_iso88591.getBytes("ISO8859-1"),"UTF-8")

來得到正確的中文漢字。這樣就既保證了遵守協 議規定、也支持中文。

3、String.getBytes(String decode)方法會根據指定的decode編碼返回某字元串在該編碼下的byte數組表示這里是encode ,not decode,從字元串到位元組數組是編碼的過程,從位元組數組到字元串(即 new String(byte[] , charsetname))才是解碼的過程。

閱讀全文

與javastring重新編碼相關的資料

熱點內容
oppo手機怎麼用數據線連接電腦 瀏覽:247
恆智天成備份文件在哪裡 瀏覽:976
電腦沒聯網怎麼拷貝文件 瀏覽:224
wps工具欄怎麼換成中文 瀏覽:338
win7和xp共享文件 瀏覽:883
蘋果4代音量鍵沒反應 瀏覽:827
怎樣打開tif文件 瀏覽:153
java下載文件zip 瀏覽:440
qq瀏覽器壓縮文件怎麼設密碼 瀏覽:526
黃埔數控編程哪裡好 瀏覽:406
mac109升級1010 瀏覽:691
在java的菜單如何導入文件 瀏覽:982
現在什麼網站銷量最高 瀏覽:760
angularjsclass定義 瀏覽:157
ug數控編程怎麼導出程序 瀏覽:466
cmdb文件 瀏覽:710
鵯文件夾 瀏覽:763
網路輿情應對的基本理念是什麼 瀏覽:433
word2007層次結構 瀏覽:456
去掉文件名的數字 瀏覽:713

友情鏈接