Jaybird / JDBC +路径中的国家字符

时间:2013-08-05 13:12:17

标签: java utf-8 localization firebird jaybird

我正在使用Java中的Firebird数据库。一切正常,但如果数据库文件路径包含国家字符,我在连接数据库时遇到问题,例如。 “á”或“č”。

示例异常:

org.firebirdsql.jdbc.FBSQLException: GDS Exception. 335544344. I/O error during "CreateFile (open)" operation for file "Z:/testing/á/sample.fdb"

路径正确,数据库存在。 Jaybird / JDBC在路径中有“á”字符的问题。

任何想法如何解决或问题在哪里?感谢所有回复。

操作系统:Windows 7 Pro 64位
JDK:1.7.0.25
Jaybird:2.2.3

1 个答案:

答案 0 :(得分:2)

当前版本的Jaybird对databasename中的特殊字符的支持有限。您可以使用几个选项来解决此问题,但如果它们实际工作在很大程度上取决于Firebird的版本和操作系统的默认字符集(Firebird运行的位置)。

选项1:使用连接属性filename_charset=<name of charset>,其中<name of charset>是运行Firebird服务器的操作系统的默认字符集。

例如:

jdbc:firebirdsql://myserver/mydatabase?filename_charset=Cp1252

选项2(Firebird 2.5或更高版本):使用JDBC-251中描述的解决方法:

使用-Dfile.encoding=UTF8启动Java应用程序,并在连接URL中包含utf8_filename=1

jdbc:firebirdsql://myserver/mydatabase?utf8_filename=1

使用此选项时,请确保已使用连接属性charSetlocalEncodinglocal_encoding(对于Java字符集名称)和/或{{指定连接字符集1}}或encoding(对于Firebird字符集名称)。如果没有,您使用的是使用JVM默认字符集的Firebird字符集lc_ctype,您需要将NONE设置为JVM的“正常”默认编码,以防止字符集转换问题由于charSet的值已更改(在某些情况下 - 除了指定file.encoding - 您还可能明确需要将charSet设置为encoding)。

选项3:在firebird服务器的NONE中为数据库定义仅包含ASCII字符的别名,并使用此别名进行连接:

aliases.conf

披露:我是Jaybird开发者之一