通过PHP调用iconv会在Apache和命令行中产生不同的结果
我正试图使用iconv删除口音的名字使用这个功能通过PHP调用iconv会在Apache和命令行中产生不同的结果,php,symfony,iconv,transliteration,Php,Symfony,Iconv,Transliteration,我正试图使用iconv删除口音的名字使用这个功能 $name = iconv('UTF-8', 'ASCII//TRANSLIT', $original) 因此,如果$original是“šñć”,我希望是“snc” 通过命令行中的PHP脚本运行此函数确实会产生预期的结果,但是在Apache web服务器(在同一台机器上)的Symfony 2应用程序中运行相同的函数会从输出字符串中删除所有重音字符,因此“Bijelić”变为“Bijeli” 哪些因素可能会影响此操作,如何在Symfony中调用
$name = iconv('UTF-8', 'ASCII//TRANSLIT', $original)
因此,如果$original
是“šñć”,我希望是“snc”
通过命令行中的PHP脚本运行此函数确实会产生预期的结果,但是在Apache web服务器(在同一台机器上)的Symfony 2应用程序中运行相同的函数会从输出字符串中删除所有重音字符,因此“Bijelić”变为“Bijeli”
哪些因素可能会影响此操作,如何在Symfony中调用此函数以获得所需的结果?谢谢 因此,事实证明,Apache和CLI的语言环境设置并不相同 调用setlocale(LC_CTYPE,“en_US.utf8”)调用iconv之前的代码>生成预期结果
如何在PHP或Apache中设置
LC\u CTYPE
。我发现/etc/apache2/envvars正在更改区域设置如果您在两种环境中打印phpinfo()的输出的iconv部分并进行比较,可能会有所帮助。检查本地在apache和cli中是否不同可能重复。当使用iconv时,必须设置区域设置。@forgottenbas-我确实看到了这个问题,但是我使用CLI得到了正确的结果,所以我不认为iconv版本有问题,尽管我可能是错的。@1ed-在这两种情况下,区域设置的设置如下所示intl.default\u locale=en