gpt4 book ai didi

postgresql - 无法在 Postgres 中插入德语字符

转载 作者:行者123 更新时间:2023-11-29 12:34:03 25 4
gpt4 key购买 nike

我使用 UTF8 作为我的 Postgres 8.4.11 数据库的编码:

CREATE DATABASE test
WITH OWNER = postgres
ENCODING = 'UTF8'
TABLESPACE = mydata
LC_COLLATE = 'de_DE.UTF-8'
LC_CTYPE = 'de_DE.UTF-8'
CONNECTION LIMIT = -1;

ALTER DATABASE test SET default_tablespace='mydata';
ALTER DATABASE test SET temp_tablespaces=mydata;

以及\l的输出

 test | postgres  | UTF8     | de_DE.UTF-8 | de_DE.UTF-8 |

当我尝试插入德语字符时:

create table x(a text);

insert into x values('ä,ß,ö');
ERROR:  invalid byte sequence for encoding "UTF8": 0xe42cdf
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".

我正在使用 PuTTY 进行连接。有什么想法吗?

最佳答案

关键元素是 client_encoding - 服务器期望从您的客户端获得的编码。它必须与实际发送的内容相匹配。 show client_encoding 会得到什么?是 UNICODE 吗?

阅读章节 Automatic Character Set Conversion Between Server and Client 中的更多内容手册。

如果您使用psql 作为客户端,您可以将client_encoding 设置为\encoding。检查本地系统用户的编码(在 Linux 上,在 shell 中键入 locale)并在 psql 中设置匹配的 client_encoding。如果您在系统上使用与 PostgreSQL 服务器的 encoding 相同的区域设置,则可以避免此类复杂情况。

如果您使用 puTTY(在 Windows 上),请确保相应地设置其“翻译”。查看设置:窗口 - 翻译。必须匹配 client_encoding。您可以右键单击正在运行的 session 并选择更改设置。您还可以使用保存的 session 保存这些设置。

关于postgresql - 无法在 Postgres 中插入德语字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11429655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com