UTF-8在CLI php中通过unixODBC php PDO Debian 9选择IBM i DB2

UTF-8在CLI php中通过unixODBC php PDO Debian 9选择IBM i DB2,php,mysql,db2,ibm-midrange,unixodbc,Php,Mysql,Db2,Ibm Midrange,Unixodbc,我有个问题,很挑剔 我有一个LAMP服务器,它通过unixODBC连接到IBMi(AS400)。PHP通过IBMi上的ODBC连接在IBMi上执行sql 我想在我的数据库中做一个简单的选择。 当脚本由导航器(apache)执行时,它工作得非常好,但当脚本由CLI(php example.php)执行时,以及当我的记录中有特殊字符如:Ôôéa@etc时,PDO返回NULL。当我在我的网络浏览器中执行脚本时,所有的特殊字符都正常 我不明白为什么。我将'CHARSET=UTF-8'放入DSN PDO连

我有个问题,很挑剔

我有一个LAMP服务器,它通过unixODBC连接到IBMi(AS400)。PHP通过IBMi上的ODBC连接在IBMi上执行sql

我想在我的数据库中做一个简单的选择。 当脚本由导航器(apache)执行时,它工作得非常好,但当脚本由CLI(php example.php)执行时,以及当我的记录中有特殊字符如:Ôôéa@etc时,PDO返回NULL。当我在我的网络浏览器中执行脚本时,所有的特殊字符都正常

我不明白为什么。我将'CHARSET=UTF-8'放入DSN PDO连接中

我认为这个bug与以下方面有关:因为当我选择with HEX(field)时,我从浏览器和CLI获得了hexa


PHP最新版本(7.4.6),Debian 9。

根据评论线程,问题的原因是当从命令行shell和PHP CLI运行时,shell没有正确地为UTF-8配置正确的语言环境(国家等)。

问题没有足够的事实。运行Apache(脚本在其中返回正确数据)的主机名是否与通过CLI运行脚本的主机名相同?详细说明。接下来,当您通过CLI在Debian9上的终端窗口中运行脚本时,shell是什么,特别是在shell会话中LANG变量的值是什么?我解决了这个问题。这是因为我的shell语言参数没有设置为utf8和我的语言。