繁体   English   中英

将SQL Server Varbinary数据类型解码为Java字符串

[英]Decoding SQL Server Varbinary Datatype to a Java String

尝试绕过Java中的Jboss Hibernate问题,在Java中无法处理存储过程中的Nvarchar SQL Server数据类型。 由于我们存储多字节字符,因此我无法将数据类型转换或转换为varchar,因此,该数据类型是必须的。 但是,我能够在存储过程中将类型转换为varbinary并在Java中解码

SQL Server过程:

Convert(varbinary, Tile)  AS Title

在Java方面,我读取了结果集和字段,现在将其编码为

更新为实际编码:

0x440065007300690067006E0020002600200050006C0061006E006E006900 

我尝试将此字节数组解析为字符串,如下所示:

            byte[] bytes = (byte[]) dataField[0]; 

            try {

                String varbinaryString = new String(bytes, "UTF-8");
                System.out.println(varbinaryString);



            } catch (UnsupportedEncodingException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

结果几乎只是“标题”字段中预期的解码字符串,它是以这种方式解码的:

D e s i g n  &  P l a n n i

而不是直截了当

Design & Planning Director

有人可以帮助我解决Java解码SQL Server varbinary数据类型的难题吗?

预先感谢您的帮助或提示。

使用Spring和JPA,我无法执行其他人提出的扩展Hibernate Sql Dialect类的建议,但是,如果您使用的是Hibernate cfg,那是一个很好的解决方案。 我是在正确的轨道上,但是您必须记住不要将varbinary限制为navarchar的继承长度,即。 nvarchar(30)。

Convert(varbinary(max), Tile)  AS Title

返回整个编码的字符串。 最后,我尝试对UTF-8进行解码,尽管它主要是反复试验,但varbinary是以UTF-16编码的。

s = new String(bytes, "UTF-16LE");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM