两天来,我一直在寻找方法来检查数据库中的值是否用Java编码或不编码。到目前为止,我已经看到Java中的字符串使用unicode (utf-16)编码。我试过遵循here和here建议的答案,但这两种方法似乎都不能正常工作。第一个总是返回false,而第二个总是返回true。
我尝试检查的字符串示例如下,其中除最后一个字符串之外的所有内容都是utf8编码的:
カタカナ和�K�{�`�F�b�N�G���[
我一直在尝试的一个想法是使用utf-8编码获取字符串的字节,然后使用默认编码获取字符串的字节,然后进行如下比较:
byte[] utf8byte = str.getBytes("UTF-8");
byte[] bytes = str.getBytes();
if(utf8byte.length == bytes.length) {
return true;
}但是,根据这种逻辑,只有第一个字符串才会返回true。据我所知,这是因为并非所有字符只使用一个字节。
那么,您建议的检查数据库中的字符串是否编码的最佳方法是什么?任何想法我都会很感激的。谢谢你的进阶。
发布于 2015-11-11 05:52:50
你不能这么做。
Java数据库驱动程序从数据库中读取编码的字节字符串,并将其转换为Java字符串。数据库可以选择以UTF-8、UTF-16或驱动程序理解的任何其他编码方式发送字符串。
一旦它是Java字符串,它就不再包含原始编码的任何痕迹。getBytes()将使用系统字符编码来解码字符串。它与数据库编码无关。
是的,Java在引擎盖下使用了UTF-16,但这是不相关的。
https://stackoverflow.com/questions/33644696
复制相似问题