我有一个Java应用程序解码通过网络接收的UTF-8编码String
并将其保存到我的数据库中的varchar
列(SQL Server 2000)。我使用JDBC的CallableStatement
保存记录(调用setString
方法来设置此列的参数。)
我遇到的问题是编写了一个包含ASCII值0(String
)的特定NUL
。这告诉我,SQL服务器不能代表特定的Unicode字符,并且JDBC驱动程序决定用ASCII值0替换,尽管我可能错了。
CallableStatement
调用失败的机制? 理想情况下,我想保证数据已完全按照指定保存,否则“快速失败”。
我的数据库字符集为Latin1_General_AS_CS
。
提前致谢。
答案 0 :(得分:1)
您需要在数据库中使用“NVARCHAR”类型。
答案 1 :(得分:0)
只是一个WAG,但是会使用.setBytes(String parameterName, byte[] x)
吗?字节数组来自myString.getBytes()
。您也可以尝试使用getBytes()
使用不同的字符集。