原因是没有正确设置客户端字符集。
默认情况下,PostgreSQL是不转换字符集的,如果你的数据库是UTF8的字符集,一般终端的中文字符集会设置为GBK,或en_US(查看终端的字符集可以看LANG环境变量的设置),所以你输入的中文是GBK的编码,这个编码不经转换的存入数据库中,而数据库是UTF8的,PostgreSQL一看没有这样的UTF8编码,所以当然报错了。
【解决方法】:
方法一:设置postgresql的客户端编码为GBK,这时PostgreSQL就知道输入的内容是GBK编码的,这样PostgreSQL数据库会自动做字符集的转换,把其转换成UTF8编码。
方法二:直接设置终端的字符集编码为UTF8,让输入的编码直接为UTF8,而不是GBK。
【具体演示】:
设置postgresql的客户端编码:
设置psql客户端字符集为GBK,方法有两种,一种是在psql中输入“\encoding GBK” ,另一种是设置环境变量“export PGCLIENTENCODING=GBK”,演示如下:
#psql -d dsc
dsc=# insert into t values(1,'中国');
ERROR: invalid byte sequence for encoding "UTF8": 0xd6d0
HINT: This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".
dsc=# show client_encoding;
client_encoding
-----------------
UTF8
(1 row)
dsc=# \encoding GBK
dsc=# show client_encoding;
client_encoding
-----------------
GBK
(1 row)
dsc=# insert into t values(1,'中国');
INSERT 0 1
dsc=# commit;
WARNING: there is no transaction in progress
COMMIT
dsc=# select * from t;
id | name
----+------
1 | 中国
(1 row)
[postgres@dsc ~]$ export PGCLIENTENCODING=GBK
[postgres@dsc ~]$ psql
psql: FATAL: conversion between GBK and LATIN1 is not supported
[postgres@dsc ~]$ psql -d dsc
psql (8.4.3)
Type "help" for help.
dsc=# select * from t;
id | name
----+------
1 | 中国
(1 row)
dsc=# insert into t values(2,'我的中国');
INSERT 0 1
dsc=# select * from t;
id | name
----+----------
1 | 中国
2 | 我的中国
(2 rows)
分享到:
相关推荐
本篇文章将深入探讨一个具体的错误:“invalid byte sequence for encoding \"UTF8\": 0x00”,并提供相应的解决方案。 这个错误发生在尝试将包含空字符(0x00)的数据从SQL Server迁移到PostgreSQL时。在SQL ...
在使用PostgreSQL数据库时,可能会遇到一个常见的错误提示“ERROR: invalid escape string”。这个错误通常出现在执行SQL查询时,尤其是在涉及转义字符的场景下。本文档将从问题描述、环境设定、错误分析、解决方法...
数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用 EPUB 数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用 EPUB 数据架构师的PostgreSQL修炼:高效设计、开发与维护数据库应用 EPUB
PostgreSQL 事务处理技术内幕深度探索 PostgreSQL 是一种开放源代码的关系数据库管理系统(RDBMS),它具有高度的可靠性、稳定性和安全性,被广泛应用于各种企业级应用和云服务。PostgreSQL 的事务处理机制是...
赠送jar包:postgresql-42.3.1.jar; 赠送原API文档:postgresql-42.3.1-javadoc.jar; 赠送源代码:postgresql-42.3.1-sources.jar; 赠送Maven依赖信息文件:postgresql-42.3.1.pom; 包含翻译后的API文档:...
Navicat连接postgreSQL 报错error:column找不到,亲测是Navicat版本不够,下载12版本有用-附件资源
postgresql-42.6.0.jar 对 java 8的支持postgresql驱动包
包含四个自定义函数: lz4:接收bytea类型的数据,返回压缩后的bytea...un_lz4_utf8:接收bytea类型的数据,返回解压后的utf8编码的文本数据 文档地址:https://blog.csdn.net/castellan/article/details/123543973
关系型数据库(如MySQL, PostgreSQL):视图与数据库安全.docx
关系型数据库(如MySQL,PostgreSQL):索引与查询优化.docx
关系型数据库(如MySQL, PostgreSQL):数据库备份与恢复策略.docx
关系型数据库(如MySQL, PostgreSQL):关系型数据库基础理论.docx
关系型数据库(如MySQL,PostgreSQL):SQL语言入门与实践.docx
关系型数据库(如MySQL, PostgreSQL):数据完整性与约束.docx
关系型数据库(如MySQL, PostgreSQL):数据库性能监控与调优.docx
关系型数据库(如MySQL, PostgreSQL):数据库迁移与数据同步教程.docx
关系型数据库(如MySQL,PostgreSQL):高级查询技巧与数据分析.docx