清理ruby中的奇怪编码
我现在正在玩couchdb。
我正在尝试将一些博客数据从redis(键值存储)迁移到couchdb(键值存储)。
看来我可能从不同的博客引擎中迁移了这些数据(每个人都有一个爱好:)),似乎有一些编码snafus。
我正在使用CouchREST从ruby访问CouchDB,我得到了这个:
问题似乎是对象的body_html部分:
<Post:0x00000000e9ee18 @body_html="[.....]Wie Sie bereits wissen, m\xF6chte EUserv k\xFCnftig seine [...]
这些应该是变形金刚(“möchte”和“künftig”)。
知道如何摆脱这些问题吗? 我在插入之前尝试使用ruby 1.9编码function或iconv进行了一些转换,但还没有运气:(
如果我尝试使用ruby 1.9的.encode()方法将这些东西转换为ISO-8859-1,则会发生这种情况(不同的文本,相同的问题):
#
我尝试将这些东西转换为ISO-8859-1
关。 你实际上想要反过来做:你有 ISO-8859-1(*),你想要 UTF-8(**)。 所以str.encode('utf-8', 'iso-8859-1')
更有可能做到这一点。
*:实际上你可能有Windows代码页1252,类似于ISO-8859-1,但有额外的智能引号和0x80-0x9F范围内的东西,ISO-8859-1用于控制代码。 如果是这样,请改用'cp1252'
。
**:嗯,你可能会这样做。 使用UTF-8是最好的方法,因此您可以存储所有可能的字符。 如果你真的想继续使用ISO-8859-1 / cp1252,那么问题可能就是Ruby错误地猜测了正在使用的字符集,你可以通过调用str.force_encoding('iso-8859-1')
来修复它。 str.force_encoding('iso-8859-1')
。