PHP解释PostgreSQL服务器之间的字符串不同
问题描述:
我有两个不同的服务器上的两个postgresql数据库提交一个字符串的PHP代码。PHP解释PostgreSQL服务器之间的字符串不同
的字符串是:
'£pound €euro'
PHP服务器版本:
- PHP 5.4.36-0 + deb7u3
- 的Debian的Linux 3.2.0-4,AMD64
服务器1版本:
- 的Debian的Linux 2.6.32-5-amd64的
- PostgreSQL的:9.1.11
服务器版本2:
- 的Debian的Linux 2.6.32-5-AMD64
- Postgresql:9.1.7
服务器编码为是UTF8
的CLIENT_ENCODING也UTF8
的区域设置为两个服务器是相同的也。
下面的代码是用来执行查询:
[email protected]_Connect('host=$myip dbname=$mydb user=$myuser password=$mypassword');
$sql = "select * from _myfunction($mystring)";
[email protected]_query($oConn, $sql);
什么我发现情况是,在执行查询时,下面是由服务器1接收:
select * from _myfunction('£pound €euro')
然而,服务器2对下列正在接收:
select * from _myfunction('£pound �euro')
是否有人有CL我可以在哪里查找哪些因素导致两台服务器之间收到的查询不同。看到服务器2的查询正在变得怪异,数据库其他部分中的无效字节序列错误引发了一个问题。
我很难过。我能看到的唯一区别是postgresql的次要版本。
答
我猜你的postgree charset在两台服务器上都不一样。请参阅How can i change database encoding for a PostgreSQL database using sql or phpPgAdmin?,它可能会帮助你
感谢您的快速回复。字符集是一样的。它们都是UTF8。 – R3b3cca
你检查过php.ini是否有相同的字符集?请参阅http://*.com/questions/9351694/setting-php-default-encoding-to-utf-8 –
在数据库服务器上? php代码在单独的服务器上执行到数据库。 – R3b3cca