首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过PHP导入一些PostgreSQL数据时出错

通过PHP导入一些PostgreSQL数据时出错
EN

Stack Overflow用户
提问于 2011-07-20 14:34:38
回答 2查看 605关注 0票数 1

我试图从PostgreSQL数据库中的一组表中导入一些数据,在另一组PostgreSQL数据库中导入另一组表。在导入时,我使用PHP,因为在将数据插入到新数据库之前,我需要进行一些数据操作。

一切顺利,直到某个地方有一些文本,其中包含单引号。在插入数据之前,我试图对这些引号进行转义,然后得到以下错误:

错误:编码“UTF8”的无效字节序列: 0x96提示:如果字节序列与由"client_encoding“控制的服务器所期望的编码不匹配,也可能发生此错误。

旧数据库上的编码是SQL_ASCII,而新数据库上的编码是UTF8。

我怎样才能解决这个问题?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-20 19:04:07

很可能您的旧数据库中有一些Windows-1252编码的文本(0x96在该编码中编码EN DASH )。

当服务器编码为SQL_ASCII时,PostgreSQL不执行编码转换或验证;它只是存储和检索文本。如果您的旧数据库使用了UTF8,则不会出现此问题。应该会的。

很有可能所有的文本都是在WIN1252中的,但是有可能是混合编码的。最简单的方法是假设前者,并在迁移脚本中将客户端编码设置为WIN1252

代码语言:javascript
复制
pg_set_client_encoding($new_database, 'WIN1252');

在连接到新数据库时设置此选项非常重要。它告诉Postgres Windows 1252编码的文本即将出现,Postgres需要将其转换为UTF-8。

注意,如果旧数据库中有任何UTF-8编码的文本,如果您这样做,它将抛出一个错误或变成莫吉贝克

票数 1
EN

Stack Overflow用户

发布于 2011-07-20 15:30:38

插入数据库时使用pg_escape_string()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6763598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档