Oracle ODBC:为什么在 SELECT 结果中将国家字符更改为等效的拉丁字符

发布于 2024-10-16 21:55:33 字数 713 浏览 0 评论 0原文

我有 Oracle 11 数据库,我使用 JDBC 和 ODBC 连接到该数据库。 JDBC 运行良好,但在 ODBC 中,SELECT 结果中的所有波兰字母都更改为等效的拉丁字母,例如 ą -> aÓ -> O 等。我用我的应用程序和使用 odbc 模块的简单 Python 程序对其进行了测试。数据库返回的值相同:

ZAMOŚĆ - by JDBC
ZAMOSC - by ODBC

我的环境:

数据库服务器:Oracle Database 11g 版本 11.2.0.1.0 - 64 位生产

客户端计算机:

  • Windows Server 2008 R2 64 位
  • 32 位和 64 位版本的 Oracle 客户端: c:\Oracle\Ora1120_32bitc:\Oracle\Ora1120_64bit
  • ODBC 管理器报告 Oracle 驱动程序版本为:11.02.00.01

我认为所有区域设置都设置为波兰/波兰,但它们是不可见 通过SET命令行实用程序。

有人知道什么 ODBC 或环境设置负责将波兰字母翻译成拉丁字母吗?

I have Oracle 11 database to which I connect using both JDBC and ODBC. JDBC works well, but in ODBC all Polish letters in SELECT result are changed to Latin equivalent, for example ą -> a, Ó -> O etc. I tested it with my application and simple Python program that uses odbc module. The same value from database is returned as:

ZAMOŚĆ - by JDBC
ZAMOSC - by ODBC

My environment:

DB server: Oracle Database 11g Release 11.2.0.1.0 - 64bit Production

Client machine:

  • Windows Server 2008 R2 64 bit
  • Oracle clients in 32 bit and 64 bit versions in: c:\Oracle\Ora1120_32bit and c:\Oracle\Ora1120_64bit
  • ODBC manager reports Oracle driver version as: 11.02.00.01

I think that all locales are set to Poland/Polish, but they are not visible
by SET command line utility.

Anybody knows what ODBC or environment setting is responsible for translation of Polish letters into Latin equivalents?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

剩一世无双 2024-10-23 21:55:33

我怀疑客户端字符集的值在这两种情况下并不相同。你能检查你的 NLS_LANG 设置的值吗:

  • 因为你在 Windows 上,所以应该在注册表中设置它(可能是 HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE -> YOUR_HOME -> NLS_LANG),
  • 你发现这并没有不能解决您的问题,但是添加环境变量 NLS_LANG 确实有效!

I suspect the value of the client character set is not the same in both cases. Can you check the value of your NLS_LANG setting:

  • since you are on Windows, it should be set in the registry (probably HKEY_LOCAL_MACHINE -> SOFTWARE -> ORACLE -> YOUR_HOME -> NLS_LANG)
  • you've found that this doesn't solve your problem, however adding an environment variable NLS_LANG did work !
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文