2016-11-09 71 views
0

我有一個用例,我需要能夠將用戶生成的數據讀入字符串,並對其進行所有正常的字符串操作。在Java中處理所有字符編碼的所有方法?

用戶生成的數據將以base64編碼,我需要將其解碼爲一個字符串。

我對這個數據一無所知,除了它將是MIME類型的文本/平原。

我想要一個簡單的,不費腦的方式將這些數據解碼爲一個字符串。一些剛開箱的東西,我不必考慮任何邊緣情況。

任何想法?

+0

您想如何處理字符串一旦你把它放入一個字符串? –

+0

@KlitosKyriacou普通字符串的東西。子串,長度,匹配等 –

+1

一般來說,除非你知道編碼是什麼,否則不可能處理所有可能的編碼。例如。如果你不知道一個字符串是否被編碼爲UTF-8或ISO-Latin-1,那麼你無法可靠地得到它的長度。 –

回答

1

如果你知道這是原始的字符串的字符集,你可以使用這個方法:

public static String fromBase64ToString(String base64String, Charset c){ 
     byte[] b = Base64.getDecoder().decode(base64String.getBytes(c)); 
     return new String(b,c); 
    } 

不幸的是,沒有一個Java API,允許你確定這是一個字符串使用的字符集。看起來,您可以使用第三部分庫(如juniversalchardet)來確定流的編碼(如果可以獲取輸入流),請參閱herehere以獲取更多信息

+0

這比預期的更容易:) –

+0

@ClickUpvote比預期的更容易,可能是因爲你沒有意識到它的影響。 'new String(b)'使用當前的系統默認編碼。你怎麼知道這是MIME消息使用的相同編碼? –

+0

@KlitosKyriacou是的,我覺得可能會缺少一些東西。你可以發佈一個答案,將跨越一切工作? –

相關問題