2015-10-20 929 views
0

我需要工作的代码,将编码和解码字符串从字节dn。如何编写这样才能在所有平台上获得相同的结果?如何从使用StandardCharsets.US_ASCII编码的字节获取初始字符串?

String s = "test"; 
byte[] b = s.getBytes(StandardCharsets.US_ASCII); 
System.out.println(b); 
+0

字符串是Unicode(可以结合希腊和俄罗斯)。 's.getBytes(StandardCharsets.UTF_8)'是全平台解决方案。要以ASCII形式在控制台中打印,请转换为** Base64 **。 –

回答

1

String -class有一个匹配的构造函数:

String s = "test"; 
byte[] b = s.getBytes(StandardCharsets.US_ASCII); 
String r = new String(b, StandardCharsets.US_ASCII); 
System.out.println(r); 
2

您编写的代码将在所有平台上给出相同的结果。

getBytes()方法有两种版本,一种采用参数,另一种不采用。不会使用默认字符集的字符集,这意味着输出在不同平台上会有所不同。但是你使用过的,你指定一个字符集的地方,在任何地方都会得到相同的结果。 (也就是说,你最好使用UTF-8而不是US_ASCII,因为它会更加宽容你在输入字符串中允许的字符。但是只要你一致的,它仍然会产生相同的行为随处可见)