導航:首頁 > 編程語言 > javabytestring亂碼

javabytestring亂碼

發布時間:2022-04-21 02:06:05

① byte[]轉string亂碼 java

圖片等二進制數據是不能直接對應成任何字元編碼的字元串。

如果非要用字元串可以轉成base64或hex。

Stringt=javax.xml.bind.DatatypeConverter.printBase64Binary(byte_array);

② java中文string 亂碼如果不正則直接System.in.read(by)可以往文件寫入中文可是我想進行匹配就要經過String

這里肯定會出亂碼的,必需將得到的位元組碼再次進行編碼,一般是16進制編碼。
如:
byte []bytes=md5.digest(user.getPassword().getBytes("utf8"));
StringBuilder ret=new StringBuilder(bytes.length<<1);
for(int i=0;i<bytes.length;i++){
ret.append(Character.forDigit((bytes[i]>>4)&0xf,16));
ret.append(Character.forDigit(bytes[i]&0xf,16));
}
user.setPassword(ret.toString());

③ java new String(byte[],UTF-8)編碼問題

Windows的記事本編碼用的是系統內碼。
而簡體Windows默認編碼就是GBK,所以你肯定要用GBK來解碼啊。

要不然你就不要自己用byte[]來讀取,而是用BufferedReader來readLine()就好了。

或者你可以試著獲取系統默認編碼。

④ java String.substring 亂碼

因為你的源是GBK編碼,儲存到String後沒有指定編碼,所以是按java默認編碼存入的。整個輸出時沒有問題,但是使用substring方法去截取一段的時候,編碼不同自然就亂碼了。
你可以使用String類的構造函數String(byte[] bytes, String charsetName) 來指定編碼。
str = new String(s.getBytes(),"GBK");
再subString應該就沒問題了。

⑤ 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,字元串輸出亂碼。。

如果這個文件內容只是一些文本信息,不是類圖片等的二進制數據,不要使用這種方式讀寫,應該用BufferedReader和FileReader,可指定文本的編碼方式,因為文本中的一個字元可能由1位元組、或2位元組或更多位元組組成(由編碼方式不同而不同)。你以位元組方式讀取可能打斷一個完整的字元。
另你的由位元組數組轉為字元串可使用new String,並指定編碼方式(如utf-8,unicode等)

⑦ 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[ ]數組才能正確被還原。

(7)javabytestring亂碼擴展閱讀

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))才是解碼的過程。

⑧ java 字元串字元串亂碼問題

應該是編碼格式的問題吧
//ISO編碼轉為GBK編碼
public static String ISOtoGBK(String s) {
String str = "";
try {
if (s == null || s == "" || s.equals("")) {
str = s;
} else {
str = new String(s.getBytes("ISO8859-1"),"GBK");
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return str;
}

⑨ java位元組數組轉換中文亂碼,請求幫助

String str = new String(test,"UTF-16");
System.out.println(str);
列印結果:???流量已使用1000.00MB,剩餘0.00MB;(均不含半年包、定向流量包)。超出流量0.00MB,超出流量(不含港澳台)按照約定資費

⑩ java 輸出byte[]出現亂碼

byte[] ba數組可以理解成是byte的類,ba的是個對象,10,50可以看出對象的二個成員變數,你要調用對象的某個成員變數,有對應的方法,那麼要訪問數組裡面的數據就要要用ba[i]這個方法才可以調用。ba在棧裡面存放的是hashcode碼,這個碼可以在堆內存裡面找到一塊空間,裡面存放這10和50這2個數,System.out.println(ba);這個句子只能輸出ba裡面存的hashcode碼,所以你只能得到[B@18a992f這個碼。

閱讀全文

與javabytestring亂碼相關的資料

熱點內容
單片機kill4軟體下載收費嗎 瀏覽:846
蘋果手機怎麼連接RMS伺服器 瀏覽:603
cisco路由器基本配置命令 瀏覽:186
android狀態欄顏色透明 瀏覽:116
db2編譯工具 瀏覽:181
騰訊雲伺服器創建環境 瀏覽:567
監管資金怎麼解壓 瀏覽:670
榮耀手機內存清理文件夾 瀏覽:174
外派程序員方案 瀏覽:554
安卓怎麼把桌面的軟體變成卡通 瀏覽:885
魯班鎖解壓嗎 瀏覽:395
打包發送文件如何加密 瀏覽:213
centos解壓縮zip 瀏覽:388
我的世界怎麼用命令風塊取消指令 瀏覽:1000
安卓軟體請求超時怎麼辦 瀏覽:476
androidapp調用另一個app 瀏覽:621
數控銑床法蘭克子程序編程 瀏覽:174
linux打包命令targz 瀏覽:997
抖音app是哪個 瀏覽:407
蘋果app怎麼上架 瀏覽:255