1

当我的应用程序在我的笔记本电脑 CouchDB 上本地运行时,它可以完美运行,但是当我从 Cloudant 上的复制运行它时,它会中断。我不得不使用https://github.com/walling/unorm js 库来使其工作,但这会根据我的喜好添加太多 kb 的 js 代码(我非常痴迷于速度)。

我非常希望将我的本地 CouchDB 编码为 Cloudant 使用的相同 utf-8 编码,这可能吗?最好的方法是什么?

我的应用程序是一个客户端(全部在浏览器中)迷你搜索引擎,它从页面 html 中包含的 csv 文件中获取数据。csv 是从运行 ubuntu 14.10 的笔记本电脑上的 couchDB 生成的。该应用程序是双语的,英语和法语:bottinbio.com

我编写了一个建议功能(在原型上,而不是主网站上),以便在用户键入时向她建议单词。其数据来自通过复制笔记本电脑 CouchDB 数据库创建的 Cloudant 数据库。

问题是从 Cloudant 数据库中检索到的“bière”等重读词的编码方式与我的本地 CouchDB 不同。通常单击单词“bière”会触发在 csv 中搜索该单词,但搜索失败,即使在 csv 中写入了“bière”。当建议来自我的 localhost 开发服务器上的 CouchDB 数据库时,不会发生这种情况。

4

1 回答 1

1

我在谷歌上搜索了很多,发现使用unorm的 Unicode 规范化“NFC”是最简单的方法。由于我的 localhost couchDB 和大多数浏览器似乎都使用“NFC”字符串规范化,因此找到一种使 Cloudant 数据库符合“NFC”的方法会容易得多且不易出错。

一个例子:“Bières”(法语中的啤酒),

沙发数据库:“\u0042\u0069\u00E8\u0072\u0065\u0073”

Cloudant:“\u0042\u0069\u0065\u0300\u0072\u0065\u0073”

另一种可能性是制作一个 json 文件,其中包含两个数据库中不同的所有单词字符串的列表,并使用它来进行检查。就我而言,这给出了一个 25kb 的小文件。随着更多数据添加到数据库中,问题将是同步。这实现起来不是很复杂,但由于 HTML5 应用程序的国际化程度不断提高,可能会导致错误。

于 2014-12-30T02:17:58.247 回答