UTF-8 SELECT IBM i DB2 throught unixODBC php CLI 中的 PDO Debian 9 php
UTF-8 SELECT IBM i DB2 throught unixODBC php PDO Debian 9 in CLI php
我有一个问题,非常非常挑剔。
我有一个 LAMP 服务器,它通过 unixODBC 连接到 IBM i (AS400)。 PHP 通过 IBM i 上的 ODBC 连接在 IBM i 上执行 sql。
我想在我的数据库中做一个简单的 SELECT。
当脚本由导航器 (apache) 执行时,它工作得很好,但是当脚本由 CLI (php example.php) 执行时,当我有特殊字符时,如:Ô ô é à @ 等在我的记录 PDO return NULL 中。当我在我的 Web 浏览器中执行脚本时,所有特殊字符都可以。
我不明白为什么。我将 'CHARSET=UTF-8' 放入我的 DSN PDO 连接中。
我认为此错误与以下内容有关:iSeries Access ODBC Driver with unixodbc on Debian - Invalid UTF-8 characters being returned from iSeries 因为当我 SELECT 使用 HEX(field) 时,我从浏览器和 CLI 获得了 hexa。
PHP 最新版本 (7.4.6), Debian 9.
根据评论线程,问题的原因是当从命令行 shell 和 php CLI 运行 时,shell 不正确针对正确的语言环境(国家等)为 UTF-8 配置。
我有一个问题,非常非常挑剔。
我有一个 LAMP 服务器,它通过 unixODBC 连接到 IBM i (AS400)。 PHP 通过 IBM i 上的 ODBC 连接在 IBM i 上执行 sql。
我想在我的数据库中做一个简单的 SELECT。 当脚本由导航器 (apache) 执行时,它工作得很好,但是当脚本由 CLI (php example.php) 执行时,当我有特殊字符时,如:Ô ô é à @ 等在我的记录 PDO return NULL 中。当我在我的 Web 浏览器中执行脚本时,所有特殊字符都可以。
我不明白为什么。我将 'CHARSET=UTF-8' 放入我的 DSN PDO 连接中。
我认为此错误与以下内容有关:iSeries Access ODBC Driver with unixodbc on Debian - Invalid UTF-8 characters being returned from iSeries 因为当我 SELECT 使用 HEX(field) 时,我从浏览器和 CLI 获得了 hexa。
PHP 最新版本 (7.4.6), Debian 9.
根据评论线程,问题的原因是当从命令行 shell 和 php CLI 运行 时,shell 不正确针对正确的语言环境(国家等)为 UTF-8 配置。