Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/235.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php PostgreSQL中的UTF-8问题_Php_Postgresql_Unicode_Utf 8 - Fatal编程技术网

Php PostgreSQL中的UTF-8问题

Php PostgreSQL中的UTF-8问题,php,postgresql,unicode,utf-8,Php,Postgresql,Unicode,Utf 8,我的数据库是UTF-8(PostgreSQL)。我将“TESTµTEST”保存到数据库中,一切正常。但是当我从数据库中选择这个值时,我看到了“TEST” 此外,当我从tbl(其中f='TESTµTEST')请求选择*时,我得到了以下错误: 错误:编码“UTF8”的字节序列无效:0xb5 您能给我一些解决方案吗?该错误表明您试图解码拉丁语-1文本,就像它是utf-8一样。PHP中的client\u编码设置很可能与实际发送的数据编码不匹配 字符串“TEST”是通过将数据从Unicode编码为utf-

我的数据库是UTF-8(PostgreSQL)。我将“TESTµTEST”保存到数据库中,一切正常。但是当我从数据库中选择这个值时,我看到了“TEST”

此外,当我从tbl(其中f='TESTµTEST')请求选择*时,我得到了以下错误:

错误:编码“UTF8”的字节序列无效:0xb5


您能给我一些解决方案吗?

该错误表明您试图解码拉丁语-1文本,就像它是utf-8一样。PHP中的
client\u编码设置很可能与实际发送的数据编码不匹配

字符串“TEST”是通过将数据从Unicode编码为utf-8字节序列,然后将其解码为拉丁语-1生成的。您可以在psql中看到这一点:

regress=# select convert_from(convert_to('TESTµTEST','utf-8'),'latin-1');
 convert_from 
--------------
 TESTµTEST
如果PostgreSQL数据库是
utf-8
,如果
client\u encoding
正确设置为
latin-1
,它将
latin-1
输入转换为
utf-8
。如果
client\u encoding
被错误地设置为
utf-8
,并且您发送
latin-1
编码数据,PostgreSQL将拒绝接受该数据并显示以下消息:

invalid byte sequence for encoding "UTF8": 0xb5
。。。这就是运行显示的
选择时发生的情况。所以-我想说您的客户端设置为
client\u encoding='utf-8'
,但您的PHP脚本实际上正在发送
latin-1
数据。我想这是因为,正如@dezso所说,您正在使用使用
latin-1
编码的文本编辑器编辑PHP脚本

要找出PHP使用的编码,请使用PHP数据库连接运行
SHOW client\u encoding

要显示数据库编码,请运行:

SELECT d.datname, pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding" 
FROM pg_database d WHERE datname = 'my_db_name_here';

哦,另一种可能是Apache(或其他什么)希望您的PHP脚本是
utf-8
编码的,但实际上它们是
latin-1
编码的文件。

该错误表明您试图将latin-1文本解码为utf-8。PHP中的
client\u编码设置很可能与实际发送的数据编码不匹配

字符串“TEST”是通过将数据从Unicode编码为utf-8字节序列,然后将其解码为拉丁语-1生成的。您可以在psql中看到这一点:

regress=# select convert_from(convert_to('TESTµTEST','utf-8'),'latin-1');
 convert_from 
--------------
 TESTµTEST
如果PostgreSQL数据库是
utf-8
,如果
client\u encoding
正确设置为
latin-1
,它将
latin-1
输入转换为
utf-8
。如果
client\u encoding
被错误地设置为
utf-8
,并且您发送
latin-1
编码数据,PostgreSQL将拒绝接受该数据并显示以下消息:

invalid byte sequence for encoding "UTF8": 0xb5
。。。这就是运行显示的
选择时发生的情况。所以-我想说您的客户端设置为
client\u encoding='utf-8'
,但您的PHP脚本实际上正在发送
latin-1
数据。我想这是因为,正如@dezso所说,您正在使用使用
latin-1
编码的文本编辑器编辑PHP脚本

要找出PHP使用的编码,请使用PHP数据库连接运行
SHOW client\u encoding

要显示数据库编码,请运行:

SELECT d.datname, pg_catalog.pg_encoding_to_char(d.encoding) as "Encoding" 
FROM pg_database d WHERE datname = 'my_db_name_here';

哦,另一种可能是Apache(或其他什么)希望您的PHP脚本是
utf-8
编码的,但实际上它们是
latin-1
编码的文件。

我在将表复制到包含相同符号的PostgreSQL 9.1中时遇到了相同的错误(来自数据库的表)。我用新的编码重新创建了数据库,但我还必须指定适当的编码


我在将表复制到包含相同符号的PostgreSQL 9.1中时遇到了相同的错误(表来自)。我用新的编码重新创建了数据库,但我还必须指定适当的编码


需要更多信息。什么编程语言和/或连接方法?显示您的代码。我使用Php和pg_connect以及pg_查询。
0xB5
是“µ”的拉丁-1编码,而不是UTF-8。tbl列的编码是什么?我的提示(基于@decereé的观察)是您的Php文件(因此要插入的字符串)是拉丁-1编码。确保这些也是UTF8'd。需要更多信息。什么编程语言和/或连接方法?显示您的代码。我使用Php和pg_connect以及pg_查询。
0xB5
是“µ”的拉丁-1编码,而不是UTF-8。tbl列的编码是什么?我的提示(基于@decereé的观察)是您的Php文件(因此要插入的字符串)是拉丁-1编码。确保这些也是UTF8'd。