我正在使用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
知更鸟: 2.2.3
发布于 2013-08-05 13:25:10
从Jaybird 3开始,如果服务器为Firebird 2.5或更高版本,数据库文件名将始终以UTF-8的形式发送。
Jaybird 2.2及更早版本对数据库名中的特殊字符的支持有限。您可以使用几个选项来解决这个问题,但是如果这些选项实际上非常依赖于Firebird的版本和操作系统的默认字符集(运行Firebird的地方)。
选项1:使用connection属性filename_charset=<name of charset>,其中<name of charset>是运行火鸟服务器的操作系统的默认字符集。
例如:
jdbc:firebirdsql://myserver/mydatabase?filename_charset=Cp1252选项2 (Firebird 2.5或更高版本,带有Jaybird 2.2):使用JDBC-251中描述的解决方法
使用-Dfile.encoding=UTF8启动您的utf8_filename=1应用程序,并在连接URL中包括utf8_filename=1:
jdbc:firebirdsql://myserver/mydatabase?utf8_filename=1使用此选项时,请确保已经使用connection属性charSet、localEncoding或local_encoding (用于Java字符集名称)和/或encoding或lc_ctype (用于Firebird字符集名称)指定连接字符集。否则,您将使用使用JVM默认字符集的Firebird字符集NONE,并且需要将charSet设置为JVM的“正常”默认编码,以防止由于file.encoding值的更改而导致的字符集转换问题(在某些情况下--除了指定charSet之外,还可能显式地需要将encoding设置为NONE)。
选项3:为数据库定义一个仅在火鸟服务器的aliases.conf中包含ASCII字符的别名,然后使用该别名进行连接:
jdbc:firebirdsql://myserver/thealias信息披露:我是Jaybird开发人员之一
https://stackoverflow.com/questions/18059030
复制相似问题