Android OS版本中的不同Charset

时间:2012-06-26 16:49:26

标签: java android character-encoding

我正在编写AES code进行加密,我意识到不同版本的Android encrypt。我花了一些时间给谷歌读了一些关于getBytes()的内容,这些内容受制于系统中的字符集,因此encrypted字符串不同。

我记录了Log.i("Charset",Charset.defaultCharset().toString());

中的信息

Android 2.3 上,它说:

06-26 16:10:33.954: I/Charset(453): Charset[UTF-8]

Android 2.2 它说:

06-26 16:05:19.140: I/Charset(737): com.ibm.icu4jni.charset.CharsetICU[UTF-8]

Android 4.x 说:

06-26 15:53:17.770: I/Charset(16957): java.nio.charset.CharsetICU[UTF-8]

Android 2.3和4.x使用相同的结果加密/解密字符串,但2.2不同。

我可以对getBytes()做些什么来使其与所有版本保持一致?

1 个答案:

答案 0 :(得分:0)

您可以将编码传递给getBytes()。例如:

String myString = "test";
byte[] bytes = myString.getBytes("UTF-8");

有关支持的值列表,请参阅: http://developer.android.com/reference/java/nio/charset/Charset.html

修改
我知道了。但我不明白为什么不同版本的Android加密方式不同。即使它使用不同的库,标准应该是相同的......很奇怪。也许你可以尝试实现自己的getBytes()然后它将在所有版本上完全相同。我找到了这个例子:http://www.javacodegeeks.com/2010/11/java-best-practices-char-to-byte-and.html