我遇到了将包含UTF-8编码字符的记录收集到CKAN中的问题。具体来说,记录的标题应该是“Normalescolimatológicas”,重音超过小写“o”。我正在使用CKAN的2.5.5版本以及最近提取的ckanext-harvest和ckanext-spatial版本。我正在使用ckanext-harvest的WAF收割机。
有趣的是,当我直接在“标题和注释”的CKAN数据集条目表单中输入文本时,生成的数据集视图会正确显示字符。然而,收集版本的数据集视图错误地显示了字符。收获记录的标题显示为“Normalescolimatológicas”,这是不正确的。
我目前的假设是UTF-8编码的字符可能被空间收集器解释为属于ISO 8859-1字符集。我的证据来自于将UTF-8编码的文本输入到这个在线字符集解码器中:
http://www.webatic.com/run/chars/charset_decoder.php
此页面显示如何根据UTF-8和ISO 8859-1字符集解释文本。显示字符串的两个不同版本。
这是CKAN收集代码的已知问题,还是有一些我缺少的配置选项,或其他完全不同的选项?我猜想收获UTF-8编码字符是一个优先事项,因为CKAN是为国际观众设计的。
更新:
我认为还有另一种可能的解释:字符串是双重编码的。日志显示标题字符串以这种方式存储在“extras”中:'title':u'Normales climatol \ xc3 \ xb3gicas'。如果字符串开头的unicode编码不存在,则字符串打印正确:
>>> x = u'Normales climatol\xc3\xb3gicas'
>>> print(x)
Normales climatológicas
>>> x = 'Normales climatol\xc3\xb3gicas'
>>> print(x)
Normales climatológicas
有没有办法可以改变空间收集器的行为,以便在没有双重编码的情况下存储标题字符串?任何帮助表示赞赏。