我有一個用例,我需要能夠將用戶生成的數據讀入字符串,並對其進行所有正常的字符串操作。在Java中處理所有字符編碼的所有方法?
用戶生成的數據將以base64編碼,我需要將其解碼爲一個字符串。
我對這個數據一無所知,除了它將是MIME類型的文本/平原。
我想要一個簡單的,不費腦的方式將這些數據解碼爲一個字符串。一些剛開箱的東西,我不必考慮任何邊緣情況。
任何想法?
我有一個用例,我需要能夠將用戶生成的數據讀入字符串,並對其進行所有正常的字符串操作。在Java中處理所有字符編碼的所有方法?
用戶生成的數據將以base64編碼,我需要將其解碼爲一個字符串。
我對這個數據一無所知,除了它將是MIME類型的文本/平原。
我想要一個簡單的,不費腦的方式將這些數據解碼爲一個字符串。一些剛開箱的東西,我不必考慮任何邊緣情況。
任何想法?
如果你知道這是原始的字符串的字符集,你可以使用這個方法:
public static String fromBase64ToString(String base64String, Charset c){
byte[] b = Base64.getDecoder().decode(base64String.getBytes(c));
return new String(b,c);
}
不幸的是,沒有一個Java API,允許你確定這是一個字符串使用的字符集。看起來,您可以使用第三部分庫(如juniversalchardet)來確定流的編碼(如果可以獲取輸入流),請參閱here或here以獲取更多信息
這比預期的更容易:) –
@ClickUpvote比預期的更容易,可能是因爲你沒有意識到它的影響。 'new String(b)'使用當前的系統默認編碼。你怎麼知道這是MIME消息使用的相同編碼? –
@KlitosKyriacou是的,我覺得可能會缺少一些東西。你可以發佈一個答案,將跨越一切工作? –
您想如何處理字符串一旦你把它放入一個字符串? –
@KlitosKyriacou普通字符串的東西。子串,長度,匹配等 –
一般來說,除非你知道編碼是什麼,否則不可能處理所有可能的編碼。例如。如果你不知道一個字符串是否被編碼爲UTF-8或ISO-Latin-1,那麼你無法可靠地得到它的長度。 –