【问题标题】:Issue with Chinese characters in Linux environment with SQL Server 2005使用 SQL Server 2005 在 Linux 环境中出现汉字问题
【发布时间】:2012-02-07 03:06:54
【问题描述】:

我正在尝试使用我的 Web 应用程序从 SQL Server 2005 数据库服务器获取中文字符,该 Web 应用程序由 Linux 机器 (RHEL) 上的 Jboss 服务器托管。问题是汉字永远不会从数据库中返回,而是显示一些方框。为此,我尝试了 Microsoft 的 JTDS 驱动程序和 SqlJdbc 驱动程序。有趣的是,数据库和驱动程序的相同组合在 Windows 环境中工作正常,中文字符以字符串形式从结果集中返回。

任何关于这个问题的帮助将不胜感激。

【问题讨论】:

  • 这不是一个编程问题,而是一个支持问题,在超级用户上可能会更好。
  • @GaryRowe - 也许,也许不是,可能是问题中提到的 Web 应用程序的配置问题。
  • 哪种 DB 和驱动程序组合在 Windows 上有效?
  • 您确定它们永远不会从数据库中返回,还是您的 web 应用程序和日志记录只是没有呈现它们?当您将输出流的编码显式设置为“Cp1252”时会发生什么?
  • 看到“方框”通常意味着您使用的字体没有字符的字形。将一些输出转换为十六进制有助于确定字符本身是否通过。尝试输出例如Integer.toHexString(str.charAt(0))

标签: java sql-server-2005 jdbc jtds


【解决方案1】:

在数据从数据库中出来到在视图中显示的时间之间,没有足够的信息来说明您对数据的处理方式。在 Linux 和 Windows 中打印一些调试信息以查看某些系统属性的差异可能是一个好主意,例如,如果您在两种情况下都输出 System.getProperty("file.encoding"),您会得到什么?

您可能想尝试使用 JAVA_OPTS=-Dfile.encoding=UTF-8。

也许下面链接中的讨论可能会有所帮助。

https://community.jboss.org/thread/155260?_sscc=t

这听起来不像是与数据库/驱动程序相关的问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-01-01
    • 2010-10-01
    相关资源
    最近更新 更多