首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >检查数据库中的字符串是否为Java编码的utf-8

检查数据库中的字符串是否为Java编码的utf-8
EN

Stack Overflow用户
提问于 2015-11-11 05:19:23
回答 1查看 1.7K关注 0票数 1

两天来,我一直在寻找方法来检查数据库中的值是否用Java编码或不编码。到目前为止,我已经看到Java中的字符串使用unicode (utf-16)编码。我试过遵循herehere建议的答案,但这两种方法似乎都不能正常工作。第一个总是返回false,而第二个总是返回true。

我尝试检查的字符串示例如下,其中除最后一个字符串之外的所有内容都是utf8编码的:

カタカナ和�K�{�`�F�b�N�G���[

我一直在尝试的一个想法是使用utf-8编码获取字符串的字节,然后使用默认编码获取字符串的字节,然后进行如下比较:

代码语言:javascript
复制
byte[] utf8byte = str.getBytes("UTF-8");
byte[] bytes = str.getBytes();
if(utf8byte.length == bytes.length) {
   return true;
}

但是,根据这种逻辑,只有第一个字符串才会返回true。据我所知,这是因为并非所有字符只使用一个字节。

那么,您建议的检查数据库中的字符串是否编码的最佳方法是什么?任何想法我都会很感激的。谢谢你的进阶。

EN

回答 1

Stack Overflow用户

发布于 2015-11-11 05:52:50

你不能这么做。

Java数据库驱动程序从数据库中读取编码的字节字符串,并将其转换为Java字符串。数据库可以选择以UTF-8、UTF-16或驱动程序理解的任何其他编码方式发送字符串。

一旦它是Java字符串,它就不再包含原始编码的任何痕迹。getBytes()将使用系统字符编码来解码字符串。它与数据库编码无关。

是的,Java在引擎盖下使用了UTF-16,但这是不相关的。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33644696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档