Vertical bar is replaces by a semicolon only on a w32 - it was done
specifically for SQLite. I have never considered a possibility for a linux
client to connect to a w32 server using w32 filenames.
  In POSIX OS a vertical bar is a pretty normal character and must not be
processed. See:

$ echo 'test' >'d|x'
$ cat 'd|x'

  The most correct way to fix your problem is to connect to the DB using
a database name, not a file name. Is it possible in Firebird?

db_name = 'sysdat01.gdb'
connection_string = 'firebird://' + db_name

Thanks for the tip. Now it works.

In the Firebird you can set an alias instead of database name.

It is possible to define an alias for Firebird in the aliases.conf file

example from:

# fbdb1 is on a Windows server:
fbdb1 = c:\Firebird\sample\Employee.fdb
# fbdb2 is on a Linux server
fbdb2 = /opt/databases/killergames.fdb

You can edit aliases.conf whilst the server is running. There is no need to stop and restart the server in order for new aliases.conf entries to be recognised.