【问题标题】:Oracle OCI8 PHP Debian Encoding errorOracle OCI8 PHP Debian 编码错误
【发布时间】:2017-09-24 22:32:42
【问题描述】:

我对使用带有 Instantclient 12.2、php 5.6 和 oci8(2.0.12) 的 debian 8 服务器的编码感到绝望。

我在 php 网站本身中遇到了编码问题,我通过在 php.ini 中将 php 编码设置为 ISO-8859-1 解决了这个问题。 -> 所以编码,包括所有欧洲字符,都适用于 php。

现在我的问题是我从 oracle12c 数据库中检索到的数据编码不正确。所以我得到了

a for ä
o for ö
u for ü
? for ß

当从 php 保存到数据库时,也会发生同样的事情。

在 sqlplus64 客户端中,数据被正确编码,所以我猜它与 oci8 有关。

我尝试了什么:

我已经将NLS_LANG 参数设置为GERMAN_GERMANY.WE8ISO8859P1GERMAN_GERMANY.UTF-8,尝试手动给oci_connect() 一个字符集,尝试了apache2.confphp.ini 的所有编码选项,尝试通过覆盖最终加载的配置.htaccess 文件和东西。但这些都不起作用。

也许有人知道出路?

【问题讨论】:

  • 不,正如我所提到的,我尝试手动设置。什么都不设置时,取NLS_LANG参数。

标签: php oracle apache .htaccess encoding


【解决方案1】:

我用

解决了

putenv("NLS_LANG=GERMAN_GERMANY.WE8ISO8859P1");

oci_connect()之前

我完全不知道为什么会这样,但我猜 apache 无法访问我通过 /etc/profile 文件设置的参数

【讨论】:

  • /etc/profile 似乎用于交互式用户外壳。奇怪的一点是oci_connect() 中的字符集被忽略:-?
猜你喜欢
  • 2012-10-22
  • 2015-05-01
  • 1970-01-01
  • 2013-05-07
  • 2016-09-20
  • 2018-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多