我有一个用例,我需要能够将用户生成的数据读入字符串,并对其进行所有正常的字符串操作。在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,那么你无法可靠地得到它的长度。 –