首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jaybird / JDBC +路径中的国家字符

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

Stack Overflow用户
提问于 2013-08-05 13:12:16
回答 1查看 2K关注 0票数 1

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

示例例外:

代码语言:javascript
复制
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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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>是运行火鸟服务器的操作系统的默认字符集。

例如:

代码语言:javascript
复制
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

代码语言:javascript
复制
jdbc:firebirdsql://myserver/mydatabase?utf8_filename=1

使用此选项时,请确保已经使用connection属性charSetlocalEncodinglocal_encoding (用于Java字符集名称)和/或encodinglc_ctype (用于Firebird字符集名称)指定连接字符集。否则,您将使用使用JVM默认字符集的Firebird字符集NONE,并且需要将charSet设置为JVM的“正常”默认编码,以防止由于file.encoding值的更改而导致的字符集转换问题(在某些情况下--除了指定charSet之外,还可能显式地需要将encoding设置为NONE)。

选项3:为数据库定义一个仅在火鸟服务器的aliases.conf中包含ASCII字符的别名,然后使用该别名进行连接:

代码语言:javascript
复制
jdbc:firebirdsql://myserver/thealias

信息披露:我是Jaybird开发人员之一

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18059030

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档