我一直在使用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
答案 0 :(得分:0)
在hakre的帮助下,我能够解决我的问题。
我从数据库中select
编辑了我的字符串。 PHP
的{{3}}第四个参数是字符集。如果您不提供,则取自环境变量NLS_LANG
。
我既没有第四个参数也没有环境变量,所以我的数据库连接字符集错了。一旦我添加NLS_LANG
变量,它就开始正常工作了。
谢谢你hakre!:)