即使使用 UTF8 编码并将 Collate/Ctype 设置为 C,Postgres 也不会处理大写或小写非 ascii 字符

问题描述 投票:0回答:2

我注意到本地计算机上有一些奇怪的查询结果,当我查看它时,由于某种原因,Postgres 不是像我期望的那样大写或小写字母。

如果我使用带重音的单个代码点

"e"
,它不会大写或小写:

SELECT upper('é');
 upper
-------
 é
(1 row)

如果我使用 2 个代码点版本

["e", "́"]
,那么就可以了。

SELECT upper('é');
 upper
-------
 É
(1 row)

在四处挖掘并找到

\l+
命令之后,我似乎在那里找到了我需要的东西。我所有的桌子看起来都一样,具有以下内容:

                 | Encoding | Collate | Ctype |
 | postgres      | UTF8     | C       | C     |      | 10 MB   | pg_default |

我对可能出现的问题有点困惑。我确实尝试卸载并重新安装 postgres,但问题仍然存在。我在 macbook pro M1、macOS 12.4 上运行

postgresql: stable 14.4 (bottled), HEAD

postgresql
2个回答
0
投票
看来 C Ctype 不正确(至少不像我预期的那样)小/大写非 ascii 字符。更改 Ctype 对我有用。


0
投票
您能分享一下您做了哪些改变吗?我这里也有同样的问题。在使用 Windows 作为主机时,我使用了 LC_CTYPE = 'English_United States.1252',但这在 Linux 系统中似乎不可用...

© www.soinside.com 2019 - 2024. All rights reserved.