postgres错误“utf8”中的sql编码问题最好将编码设置为utf8还是使数据与win1252兼容?

carvr3hs  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(464)

我创建了一个从excel电子表格导入csv文件的表。当我试图运行下面的select语句时,我得到了错误。

test=# SELECT * FROM dt_master;
ERROR:  character with byte sequence 0xc2 0x9d in encoding "UTF8" has no equivalent in encoding "WIN1252"

我已经阅读了这个堆栈溢出帖子中发布的解决方案,并且通过将编码设置为utf8来克服这个问题,所以到目前为止,我仍然能够继续处理数据。然而,我的问题是,将编码设置为utf8是否真的解决了这个问题,还是仅仅是一个解决方法,它会在将来产生其他问题,我最好删除冲突字符并使数据符合win1252。谢谢您

qybjjes1

qybjjes11#

您的数据库中有一个奇怪的字符(unicode代码点9d,一个控制字符),它可能是错误地到达那里的。
必须将客户机编码设置为应用程序期望的编码;即使消除了错误,也不会有其他值产生正确的结果。这个错误是有原因的。
您有两个选择:
修复数据库中的数据。这个角色很可能不是我们想要的。
将应用程序更改为在内部使用latin1或(更好的)utf-8,并适当地设置客户机编码。
在任何地方使用utf-8都有一个好处,那就是您不会遇到这种问题。

相关问题