2017-01-12 94 views
0

我的問題是如果有任何簡短的方式來使用標準的Java庫函數將字符串轉換爲字節數組? 「字符串」確實有無編碼,字符串本身是一個無緣無故的字符串,但這是我得到它的方式。我沒有自己編寫代碼,也無法更改,但我必須處理它。一個標準的String.getBytes()將不起作用,因爲有些值總是被「?」取消,並使底層的二進制數據顯然無用。從字符串獲取原始字節數組

任何想法?

這裏的問題與此處基本相同:How do I get a consistent byte representation of strings in C# without manually specifying an encoding?,而不是Java的C#。我搜索了一段時間,但我找不到任何合適的解決方案。

在此先感謝。

+0

如果你可以顯示你正在處理的字符串,那麼我們可能會提供幫助。另外,如果它沒有編碼,爲什麼有些字節被刪除。你在運行什麼操作系統? –

+0

相關? http://stackoverflow.com/questions/23316755/java-string-getbytes-charsetname-vs-string-getbytes-charset-object –

+0

請分享一個字符串,給出'?'同時轉換。 很可能是字符編碼的問題,請用'UTF-8'來嘗試 –

回答

1

不幸的是,在Java中沒有像「沒有編碼的String」那樣的東西。正如documentation說:

一個String表示在UTF-16格式

一個字符串,所以你得到的數據作爲String它已被編碼和有沒有辦法解決它的那一刻。

0

在Java中,String是圍繞charbyte的數組的封裝。此外,字符串是不可變的,因此不允許直接訪問底層char[]

最接近的東西直接訪問是:

  • 使字符數組的副本
char[] toCharArray() 

這個字符串到一個新的字符數組轉換。

  • 索引獲得字符
char charAt(int index) 

返回指定索引的char值。