psql 不允许输入西里尔符号

psql 不允许输入西里尔符号

我有一台安装了 postgresql 8.4 的服务器。但是当我尝试插入一些俄语数据时,例如:

UPDATE category set question = '[there should be russian symbols]' WHERE id = 1;

终端不允许我输入俄语符号。

这是带有区域设置的 postgresql.conf 文件的一部分:

lc_messages = 'ru_RU.UTF-8'
lc_monetary = 'ru_RU.UTF-8'
lc_numeric = 'ru_RU.UTF-8'
lc_time = 'ru_RU.UTF-8'

以下是区域设置命令输出:

LANG=ru_RU.UTF-8
LANGUAGE=ru_RU.UTF-8
LC_CTYPE="ru_RU.UTF-8"
LC_NUMERIC="ru_RU.UTF-8"
LC_TIME="ru_RU.UTF-8"
LC_COLLATE="ru_RU.UTF-8"
LC_MONETARY="ru_RU.UTF-8"
LC_MESSAGES="ru_RU.UTF-8"
LC_PAPER="ru_RU.UTF-8"
LC_NAME="ru_RU.UTF-8"
LC_ADDRESS="ru_RU.UTF-8"
LC_TELEPHONE="ru_RU.UTF-8"
LC_MEASUREMENT="ru_RU.UTF-8"
LC_IDENTIFICATION="ru_RU.UTF-8"
LC_ALL=ru_RU.UTF-8

我究竟做错了什么?

答案1

我遇到了同样的问题,但使用的是 postgresql 9.3。

问题在于先加载哪个库。在我的例子中是

/usr/lib/postgresql/9.3/bin

使用符号链接:

ldd /usr/lib/postgresql/9.3/bin/psql 
libedit.so.2 => /usr/lib/x86_64-linux-gnu/libedit.so.2 (0x00007f1b54ac2000)

如果你像这样运行 psql:

LD_PRELOAD=/lib/x86_64-linux-gnu/libreadline.so.6.3 psql

然后您就可以输入西里尔符号。

相关内容