Encoding 来自开发人员机器和生产服务器的不同Firebird查询结果(西里尔字母)

Encoding 来自开发人员机器和生产服务器的不同Firebird查询结果(西里尔字母),encoding,firebird,Encoding,Firebird,我正在连接到一个远程Firebird 2.1 DB服务器,我正在查询包含一些西里尔字母和一些拉丁字母的数据 问题是,当我在生产系统上部署应用程序时,西里尔字母看起来是这样的:。此外,当试图记录来自数据库的内容时,日志文件中的西里尔文内容被跳过(即,我根本看不到) 此时,我不确定是从数据库中获得了不一致的数据,还是由于某种原因生产环境无法识别这些字符 我已经四处游荡了很长一段时间,没有什么好主意了,所以任何提示都很好 我使用的开发机器运行Windows 7 Ultimate SP1。我的系统语言环

我正在连接到一个远程Firebird 2.1 DB服务器,我正在查询包含一些西里尔字母和一些拉丁字母的数据

问题是,当我在生产系统上部署应用程序时,西里尔字母看起来是这样的:。此外,当试图记录来自数据库的内容时,日志文件中的西里尔文内容被跳过(即,我根本看不到)

此时,我不确定是从数据库中获得了不一致的数据,还是由于某种原因生产环境无法识别这些字符

我已经四处游荡了很长一段时间,没有什么好主意了,所以任何提示都很好

我使用的开发机器运行Windows 7 Ultimate SP1。我的系统语言环境是保加利亚语


生产服务器是通过Paralles-Plesk面板访问的,我不确定下面是什么。

如果您没有在连接属性中指定任何字符集,那么几乎所有Firebird驱动程序都默认为连接字符集
。这意味着Firebird将发送存储在数据库中的字符串字节,而不进行任何转换,另一方面,驱动程序将使用默认的系统字符集将这些字节转换为字符串。如果使用具有各种默认系统字符集的多个系统,将得到不同的结果


除非您确实知道自己在做什么,否则您应该始终明确指定连接字符集(
WIN1251
)?如果未指定任何连接字符集,则几乎所有驱动程序都使用
NONE
连接,并使用默认系统字符集转换接收的字节。我在字符串中未指定任何字符集。我之前检查过远程数据库的字符集,它是默认的-‘无’,然后尝试WIN1251,看看它是否解决了您的问题。是的,这就解决了问题。谢谢你,安德烈!