php的iconv()不再显示正确的字符串

时间:2013-06-17 13:13:13

标签: php oracle oracle10g apache2 iconv

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

我不确定发生了什么事,因为我最近才注意到这一变化。问题是iconv似乎停止运行良好 - 当我使用错误的编码名称时它仍会抛出通知。

之前,当我用

将字符串保存到数据库时

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

当我通过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

1 个答案:

答案 0 :(得分:0)

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

我从数据库中select编辑了我的字符串。 PHP的{​​{3}}第四个参数是字符集。如果您不提供,则取自环境变量NLS_LANG

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

谢谢你hakre!:)