1

JavaでFirebirdデータベースを使用しています。すべて正常に動作しますが、データベース ファイル パスに国別文字が含まれている場合、データベースへの接続に問題があります。「á」または「č」。

例外の例:

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

パスは正しく、データベースは存在します。Jaybird / JDBC でパスの「á」文字に問題があります。

それを修正する方法や問題はどこにありますか? すべての応答に感謝します。

OS: Windows 7 Pro 64 ビット
JDK: 1.7.0.25
Jaybird: 2.2.3

4

1 に答える 1

2

Jaybird 3 以降、サーバーが Firebird 2.5 以降の場合、データベース ファイル名は常に UTF-8 として送信されます。

Jaybird 2.2 以前では、データベース名での特殊文字のサポートが制限されていました。この問題を回避するために使用できるいくつかのオプションがありますが、それらが実際に機能するかどうかは、Firebird のバージョンと OS のデフォルトの文字セット (Firebird が実行されている場所) に大きく依存します。

オプション 1: Firebird サーバーが実行されているオペレーティング システムの既定の文字セットであるfilename_charset=<name of charset>接続プロパティを使用します。<name of charset>

例えば:

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

オプション 2 (Firebird 2.5 以降、Jaybird 2.2 を使用): JDBC-251で説明されている回避策を使用します。

Java アプリケーションを開始し、接続 URL-Dfile.encoding=UTF8に含めます。utf8_filename=1

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

このオプションを使用する場合は、接続プロパティcharSetlocalEncodingまたはlocal_encoding(Java 文字セット名の場合)、および/またはencoding( lc_ctypeFirebird 文字セット名の場合) を使用して接続文字セットを指定していることを確認してください。NONEそうでない場合は、JVM のデフォルト文字セットを使用するFirebird 文字セットを使用しておりcharSetfile.encoding(場合によっては- 指定に加えて- に明示的に設定するcharSet必要がある場合もあります)。encodingNONE

オプション 3:aliases.confデータベースの firebird サーバーで ASCII 文字のみのエイリアスを定義し、代わりにこのエイリアスを使用して接続します。

jdbc:firebirdsql://myserver/thealias

開示: 私は Jaybird 開発者の 1 人です

于 2013-08-05T13:25:10.027 に答える