首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用多字符字符串替换字符

用多字符字符串替换字符
EN

Stack Overflow用户
提问于 2014-07-10 12:37:58
回答 2查看 3.6K关注 0票数 3

我正试图取代德国和荷兰的货币,如äüß。它们应该像ae那样编写,而不是ä。所以我不能简单地把一个字符翻译成另一个字符。

有什么更优雅的方法吗?实际上,它看起来像是(尚未完成):

代码语言:javascript
复制
SELECT addr, REPLACE (REPLACE(addr, 'ü','ue'),'ß','ss') FROM search;

在我尝试不同命令的过程中,我遇到了另一个问题:

当我搜索Ü时,我得到了这样的信息:

错误:编码"UTF8":0xdc 27的无效字节序列

它和U&'\0220'试过了,但并没有取代任何东西。只有使用ü (对于小写ü)才能正确地替换它。必须用unicode做点什么,但是如何解决这个问题呢?

来自德国的亲切问候。:)

EN

回答 2

Stack Overflow用户

发布于 2014-07-10 13:16:56

您的服务器编码似乎是UTF8。

我怀疑你的client_encoding不匹配,这可能会给你一个错误的印象,你正在处理的。向以下机构查询:

代码语言:javascript
复制
SHOW client_encoding;   -- in your actual session

并阅读以下相关答案:

Can not insert German characters in Postgres

Replace unicode characters in PostgreSQL

工具链的其余部分也必须保持同步。例如,在使用puTTY时,必须确保终端与其他终端一致:Change settings... Window -> Translation -> Remote character set = UTF-8

至于你的第一个问题,你已经有了最好的解决办法。最好用一串replace()语句替换几个umlauts。

正如您似乎已经知道的那样,使用(单个) translate()语句来替换单个字符更有效。

相关信息:

票数 3
EN

Stack Overflow用户

发布于 2014-07-11 13:07:27

除了其他原因,我决定用python来代替。正如Erwin之前所写的,似乎没有比组合replace命令更好的解决方案了。

一般来说,很简单,甚至连编码都不用benn用。我的“最后”解决方案现在如下所示:

代码语言:javascript
复制
ger_UE="Ü"
ger_AE="Ä"
ger_OE="Ö"
ger_SS="ß"

dk_AA="Å"
dk_OE="Ø"
dk_AE="Æ"

cur.execute("""Select addr, REPLACE (REPLACE (REPLACE( REPLACE (REPLACE (REPLACE (REPLACE(addr, '%s','UE'),'%s','OE'),'%s','AE'),'%s','SS'),'%s','AA'),'%s','OE'),'%s','AE')
  from search WHERE x = '1';"""%(ger_UE,ger_OE,ger_AE,ger_SS,dk_AA,dk_OE,dk_AE))

我现在期待着它撞到大桌子时的速度。如果有人想做一些注释,他们是非常欢迎的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24676779

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档