gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:17:16 37 4
gpt4 key购买 nike

我正在使用 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

最佳答案

从 Jaybird 3 开始,如果服务器是 Firebird 2.5 或更高版本,数据库文件名将始终以 UTF-8 形式发送。

Jaybird 2.2 及更早版本对数据库名称中的特殊字符的支持有限。您可以使用多种选项来解决此问题,但它们是否真正有效很大程度上取决于 Firebird 的版本和操作系统(Firebird 运行的操作系统)的默认字符集。

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

例如:

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

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

使用-Dfile.encoding=UTF8启动您的Java应用程序并包括utf8_filename=1在连接 URL 中:

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

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

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

jdbc:firebirdsql://myserver/thealias

披露:我是 Jaybird 开发者之一

关于java - Jaybird/JDBC + 路径中的国家字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18059030/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com