0

我一直在使用iconv将数据从我公司的数据库 ( windows-1250) 转换为UTF8. 直到最近,这一切都很好。

我不太确定发生了什么,因为我最近才注意到这种变化。问题是它iconv似乎停止工作 - 当我使用错误的编码名称时它仍然会引发通知。

早些时候,当我将字符串保存到数据库时

htmlspecialchars(iconv('UTF-8', 'windows-1250', $string), ENT_QUOTES)很好。现在只有问号被写入我的数据库而不是 eg ąęś

PL/SQL Developer当我通过 php更正它们并阅读它们时:htmlspecialchars_decode(iconv('windows-1250', 'UTF-8', $string), ENT_QUOTES)

我收到aes。我试图在字符串输出之前在 php 中设置编码:

header('Content-Type: text/html; charset=utf-8');,但没有帮助。

我的软件是:

  • PHP 5.3.15 (cli)
  • iconv (GNU libc) 2.15
  • Apache/2.2.22
  • openSUSE 12.2
  • Oracle 10.2.0.4
  • oci
4

1 回答 1

0

hakre的一些帮助下,我能够解决我的问题。

当我select从数据库中编辑字符串时,我的字符串已经被音译了。PHPoci_connect()第四个参数是字符集。如果您不提供,则取自环境变量NLS_LANG

我既没有第四个参数也没有环境变量,所以我的数据库连接字符集是错误的。一旦我添加了NLS_LANG变量,它就开始正常工作了。

谢谢哈克!:)

于 2013-06-25T14:23:10.620 回答