当前位置: 首页 > 知识库问答 >
问题:

使用JDBC Oracle瘦驱动程序进行错误的字符串编码

岑畅
2023-03-14
Locale.getDefault(); // -> fr_FR
Charset.defaultCharset(); // -> UTF-8
rs.getString("MY_COL"); // direct from ResultSet
new String(rs.getString("MY_COL").getBytes(Charset.forName("ISO-8859-15")), Charset.forName("UTF-8")); // convert ISO bytes to UTF-8 bytes
générale
générale

那么,为什么Oracle JDBC驱动程序创建使用ISO-8859-1字节编码的字符串呢?如何在不改变数据库(也不转换字符串)的情况下获得UTF-8字节编码的字符串?我可以从驱动程序配置ou JMV args中更改它吗?

共有1个答案

梁建德
2023-03-14

我想您的数据库不在ISO8859-1(NLS_CHARACTERSET=WE8ISO8859P1)中。

数据库

create table foo (col1 varchar2(40));
insert into foo values('é');
insert into foo values(chr(233));
select dump(col1) from foo;

应返回

Typ=1 Len=1: 233 
Typ=1 Len=1: 233 
Typ=1 Len=2: 195,169
Typ=1 Len=1: 233
 类似资料:
  • 问题内容: 我有一种方法可以将记录插入Postgres DB中,并返回为所述记录生成的标识字段。问题是,如果我在我的POM文件中包含Redshift驱动程序,那么该驱动程序将代替Postgres驱动程序被使用- Redshift驱动程序不允许返回标识值。 代码是: 使用此POM时,它可以工作: 使用此POM时,它不起作用: 是什么让Java选择Redshift驱动程序而不是Postgres驱动程序

  • 我试图编译odbc驱动程序,但我有以下错误: 我运行以下命令: 我的Ignite版本是2.5下载者(在01.03.2018): 请帮帮我.

  • 有一个问题,它不隐藏浏览器,我能做什么?

  • 我使用的是Java8、Spark 2.1.1、Ignite2.5和BoneCP 0.8.0 结果出现以下异常: 提交脚本如下所示: 当使用“本地”Spark实例时,它使用think JDBC驱动程序连接到Ignite。有什么想法吗?

  • 服务器上的mongodb版本将比驱动程序版本旧。我的java驱动程序版本是3.6,Mongo-版本显示我是2.4 我该怎么解决这个问题?

  • 我有这个文件test.py: 我想使用此python代码从页面获取页面源。我使用的是chrome驱动程序selenium和python。但是当我启动这个脚本时,我遇到了这个错误: 我在互联网上尝试了几乎所有的解决方案,但每次我遇到其他错误时,有人知道我在这种情况下应该怎么做吗?有人建议我如何解决这个问题吗?