mongodb - 在 Go 中将任何编码转换为 UTF 8

标签 mongodb encoding utf-8 go

我正在通过 IMAP 下载邮件。接下来,我将已解析的消息添加到 MongoDB 中。我有一个问题,因为 MongoDB 仅支持 UTF 8。我想将任何编码转换为 UTF 8。代码多种多样。如何将每个字符串转换为 UTF 8?

我知道,我可以转换为二进制,但我必须有普通文本,因为我必须在数据库中搜索短语。除非,我可以用二进制搜索普通文本吗?

最佳答案

我正在使用 go-charset 项目来执行此操作:https://code.google.com/p/go-charset/

非常简单,您从字符集创建一个阅读器,它会自动转换为 utf-8。来自图书馆的例子:

r, err := charset.NewReader(strings.NewReader("\xa35 for Pepp\xe9"), "latin1")
if err != nil {
    log.Fatal(err)
}
result, err := ioutil.ReadAll(r)
if err != nil {
    log.Fatal(err)
}
fmt.Printf("%s\n", result)  //outputs £5 for Peppé

现在,在我的例子中,我知道字符集,因为它来自网页,并且我阅读了 header /元标记。如果您需要通过启发式自动检测字符集,您将需要另一个库,例如这个库:https://github.com/saintfish/chardet

我没用过,但它看起来也很容易使用:

detector := chardet.NewTextDetector()
result, err := detector.DetectBest(some_text)
if err == nil {
    fmt.Printf(
        "Detected charset is %s, language is %s",
        result.Charset,
        result.Language)
}

关于mongodb - 在 Go 中将任何编码转换为 UTF 8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27297328/

相关文章:

node.js - 如何对 keystonejs 模型进行单元测试?

javascript - 信息没有通过 Mongoose 传递到数组,无法找出原因

mongodb - $split 并返回 mongodb 查询中的第一个数组元素

java 将字符串编码为UTF

php - URL缩短器: best encoding method?

mongodb - ODM 查询生成器 : Is there an "inverse in" operator, 或等效操作?

encoding - 表情符号值范围

utf-8 - 大文件的编码转换

php - MySQL 将 PHP 中的 UTF-8 条目正确保存在 VARCHAR 中,但不能保存在文本 blob 中

java - 如何将二进制字符串转换为使用 UTF-8 编码的 Java 字符串