2014-03-27 52 views
0

我試圖使用以下代碼來轉換一個字節數組到Java字符串:轉換字節Java字符串(可能漢字)

//strInput is a binary string 
byte[] bval = new BigInteger(strInput, 2).toByteArray(); 
strOutput = new String(bval, "UTF-8"); 

我沒有遇到問題,當目標輸出包含字母數字或符號(例如%& * $)。但是,當它包含純日文字符時,我在輸出的開頭不斷收到一個額外的NULL字符。

我的第一個猜測可能是它與有符號/無符號字節有關。但是當我試圖獲得輸入的二進制補碼時,我得到了垃圾字符作爲輸出。

你們是否還有其他的想法,看看額外的NULL字符來自哪裏?

------- UPDATE ------ 我在這裏閱讀的某處在trimover()也刪除NUL字符,除了空白,所以我試過。迄今爲止,在日文字符的輸入方面效果很好。

這是安全使用? 或者我真的應該找到使用BigInteger的替代方案嗎?

謝謝!

+0

請給我們一個樣本二進制字符串。我強烈懷疑在這裏使用'BigInteger'來解析數據是一個壞主意。 –

+0

字節數組的本質是什麼?它從何而來?如果它是未知的字節數組,它將是一個命中和未命中(更經常地錯過)將它正確地轉換爲一個字符串。 – anonymous

+0

@Jon Skeet - 示例二進制字符串應該是111001101001110010101100. – pliskin

回答

0

嘗試

byte[] bval= strInput.getBytes("UTF-8");