PHP解释Postgresql服务器

时间:2015-06-19 15:50:21

标签: php linux postgresql encoding

我有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

两台服务器的区域设置也相同。

以下代码用于执行查询:

$oConn=@pg_Connect('host=$myip dbname=$mydb user=$myuser password=$mypassword');
$sql = "select * from _myfunction($mystring)"; 
$result=@pg_query($oConn, $sql);

我发现的是,当执行查询时,服务器1正在接收以下内容:

select * from _myfunction('£pound €euro')

然而,在服务器2上收到以下信息:

select * from _myfunction('£pound �euro')

有没有人知道我在哪里可以找出导致两台服务器之间收到的查询不同的原因。看到服务器2的查询正在转变时髦,数据库的其他部分中的无效字节序列错误导致问题。

我很难过。我能看到的唯一区别是postgresql的次要版本。

1 个答案:

答案 0 :(得分:0)

我猜你的postgree charset在两台服务器上都不一样。请参阅How can i change database encoding for a PostgreSQL database using sql or phpPgAdmin?,它可能会对您有所帮助