![](/img/trans.png)
[英]JAVA - SQL server insert string value into varbinary(max) data type
[英]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.