我正在尝试替换德语和荷兰语变音符号,例如ä
, ü
, or ß
。它们应该写成ae
代替ä
。所以我不能简单地将一个字符翻译成另一个字符。
有没有更优雅的方法来做到这一点?实际上它看起来像这样(尚未完成):
SELECT addr, REPLACE (REPLACE(addr, 'ü','ue'),'ß','ss') FROM search;
在尝试不同命令的过程中,我遇到了另一个问题:
当我寻找Ü
我懂了:
错误:编码“UTF8”的字节序列无效:0xdc27
尝试过U&'\0220'
,它没有取代任何东西。仅通过使用ü
(对于小写字母ü
)已正确替换。必须用unicode做一些事情,但是如何解决这个问题呢?
来自德国的亲切问候。 :)
您的服务器编码似乎是UTF8。
我怀疑你的client_encoding
不匹配,这可能会让您对正在处理的内容产生错误的印象。检查:
SHOW client_encoding; -- in your actual session
并阅读相关答案:
无法在 Postgres 中插入德语字符
替换 PostgreSQL 中的 unicode 字符
工具链的其余部分也必须同步。例如,当使用 puTTY 时,必须确保终端与其余部分一致:Change settings... Window -> Translation -> Remote character set
= UTF-8
.
至于你的第一个问题,你已经有了最好的解决方案。最好用一串替换几个变音符号replace()
声明。
正如您似乎已经知道的那样,单个字符替换使用(单个)会更有效translate()陈述。
Related:
-
替换 PostgreSQL 中的 unicode 字符
- 正则表达式删除字符串中所有出现的多个字符
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)