数据库迁移期间的UTF-8编码错误

时间:2012-11-13 17:44:40

标签: php sql postgresql utf-8

我不断收到愚蠢的invalid byte sequence for encoding "UTF8": 0x96错误或其他错误。现在我已将其识别为我的服务器空间问题。

我从一个非常相似的数据库迁移,这也是UTF-8。我在第一个数据库上测试了我的PHP脚本并且它们可以工作,但是在我需要它们的时候却没有。它一定是编码问题,但我不确定是什么。

我的PHP查询在新数据库上失败并产生该错误。

PHP:

$name = $_POST["name"];
$type = $_POST["type"];
$contact = $_POST["contact"];
$address = $_POST["address"];
$postcode = $_POST["postcode"];
$phone = $_POST["phone"];
$description = $_POST["description"];
$location = $_POST["location"];

$conn = pg_connect(/*DATABASE CONNECTION DETAILS*/);

$res = pg_query("INSERT INTO address (organisation_type, contact_name, address, postcode, phone_number, description, location_to_town, organisation_name) VALUES ('$type', '$contact', '$address', '$postcode', '$phone', '$description', '$location', '$name')");

 pg_close($conn);

我的意思是这是一个简单的PHP写入数据库函数,唯一奇怪的是一个UTF-8数据库工作而另一个没有。有什么方法可以比较服务器/在命令行更改我的PostGreSQL服务器的配置吗?

感谢任何信息将不胜感激。把头发撕掉了!

1 个答案:

答案 0 :(得分:2)

错误消息名称为0x96,看起来不像UTF-8,而是在某个8位字符集中使用破折号。通过在HTML中设置正确的元标题,确保您要发布UTF-8:

<meta http-equiv="content-type" content="text/html; charset=utf-8">

或者在PHP端发送带有内容类型HTTP标头的字符集:

header('Content-Type: text/html; charset=utf-8');