2016-11-09 66 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是的,我觉得可能会缺少一些东西。你可以发布一个答案,将跨越一切工作? –

相关问题