我正在编写用于加密的AES code
,并且我实现了Android encrypt
的不同版本。我花了一段时间去谷歌,并读了一些关于getBytes()
都受系统字符集限制,因此encrypted
字符串是不同的。Android操作系统版本中的不同字符集
我记录从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()
与所有版本保持一致?
嗨,我知道关于通过编码部分。如果您通过Charset.defaultCharset()查看输出,则全部使用UTF-8。 –
看到我编辑的答案 – Caner
嗨凯尔,有趣。我使用stringToBytesUTFCustom(String str)从你的链接中尝试了这个例子,它们仍然以不同的方式加密/解密。不幸的是,我只有一个物理电话,所以我不能确定为什么我会得到这个结果。希望它仅限于模拟器,但它确实显示了一个潜在的陷阱,或者它是一个潜在的Android错误? –