【发布时间】:2021-11-25 20:58:48
【问题描述】:
我刚刚设置了一个新的外部表,如果我只选择“ID”(整数)字段,它就会按预期工作。
当我添加“描述”(文本)字段并尝试选择表格时,它会失败并显示以下错误消息:
utf-8 'Codec cannot decode byte 0xfc in position 10: invalid start byte
查看远程表后,发现“Description”包含特殊字符,如:“ö, ü, ä”
我能做些什么来解决这个问题?
表定义(仅前 2 行)
远程表:
CREATE TABLE test (
[Id] [char](8) NOT NULL,
[Description] [nvarchar](50) NOT NULL
)
外表:
Create Foreign Table "Test" (
"Id" Char(8),
"Description" VarChar(50)
) Server "Remote" Options (
schema_name 'dbo', table_name 'test'
);
附加信息:
- 外来数据包装器:tds_fdw
- 本地服务器:Postgres 12,编码:UTF8
- 远程服务器:Sql Server,编码:Latin1_General_CI_AS
【问题讨论】:
-
请告诉我们 a) 您正在使用哪个外部数据包装器(听起来不像 postgres_fdw) b) 两个数据库上的服务器编码是什么 c) 外部服务器和外部表是如何定义的.
-
@LaurenzAlbe 感谢您的回复,请查看编辑。
-
它告诉你的是第 10 个字符是一个无效的 UTF-8 字符。可能是由于从 Latin-1 错误地转换为 UTF-8 所致。 0xfc 在拉丁语 1 中是
ü。为简单起见,您可以将该列设置为 Latin-1。或整个表或架构(视情况而定)。 -
您是否尝试在
freetds.conf中设置“client charset = UTF-8”?
标签: postgresql foreign-data-wrapper