pg表中文字符变成乱码的问题解决

近期有个需求要把postgressql数据库里面的表,倒到另一个pg数据库。

1使用 pg自带的插件,从pg1export出来,然后到pg2 import进去。发现倒不进去。报错说:要不试试latin编码。

这个时候要修改一下两个数据库的客户端编码。使用show clinet_encoding;查看客户端编码

set client_encoding='utf8';把客户端编码都统一成为utf8格式的编码。

再试一次可以导入数据了。

查看数据是乱码。

2修改数据库建库的编码。数据库初始建库的编码决定数据库文件的展示效果。

使用 select *  from pg_database;查看pg数据库的编码,发现原来我的编码是0和postgres编码是6

pg表中文字符变成乱码的问题解决_第1张图片

用代码   update pg_database set encoding=pg_char_to_encoding('UTF8') where datname='yourdatabasename';

把数据库建库编码改成utf8,再查询发现encoding=6了,说明直接用上面代码把数据库初始化编码改为utf8也可以,直接修改pg_database的encoding=6应该也可以的。

3总结一下。

1)pg插件倒数据的过程中,数据无法倒入的时候要修改client_encoding使得数据倒出以后编码和倒入以后的客户端的编码一致。才能倒入。

2)pg数据表出现中文变成乱码是数据库建库的初始编码的问题。用encoding=6可以设置成为utf8来试试。

 

——————————————————————————————————

2020-1-3

今天在处理地理数据的时候发现又有乱码,按照上述操作貌似没有解决问题,重新附上这次的解决方案

一份高速公路的数据,去qgis打开数据表有乱码。

解决方案:

1.qgis右击——属性——修改编码格式从utf-8为gbk

2.查看属性表后,发现已经没有乱码

3.导出数据为shp。设置编码格式为gbk

4.重新把gbk编码的高速公路数据拖到postgis数据库,入库。

检查ok

之前在1,2步,墨迹了半天。发现没有真正改过来编码方式。得按照一定编码方式导出数据才彻底更改编码方式。如果只是在qgis里修改一下编码格式看一下,并没有真正改变数据的编码格式。

反正就是把数据编码弄对了再导入就行了。

 

你可能感兴趣的:(pg)