2

我正在尝试将 .NET 序列化 JSON 文档插入到 CouchBase,但会出现非英文字符的乱码。

我试着说:

name = " الفورية مترجم نصوص مجاني إلى "

但我得到:

"name": " ״§„ˆ״±״© …״×״±״¬… †״µˆ״µ …״¬״§† ״¥„‰ ",

在 CouchBase 管理页面中查看它时。

有什么解决办法吗?

我正在使用 ASP.NET 4.5 和最新的 CouchBase API 和 CouchBase 2.0 beta。

4

2 回答 2

1

还注意到http://www.couchbase.com/forums/thread/gibrish-non-english-characters-using-c-client-and-coucbase-2-0-beta,但复制到这里以供参考:

嗨伊丹姆

.NET 客户端使用 UTF-8 存储字符串。您是否正确看到来自客户端的数据,或者管理控制台中的字符串是否混淆?

此外,您可以尝试使用 Newtonsoft.JSON 进行 Json 序列化的新扩展方法。在 .NET Couchbase Client Beta 中,您会发现 Couchbase.Extensions 具有以下类:

public static class CouchbaseClientExtensions
{
    public static bool StoreJson(this CouchbaseClient client, StoreMode storeMode, string key, object value)
    {
        var json = JsonConvert.SerializeObject(value);
        return client.Store(storeMode, key, json);
    }

    public static T GetJson<T>(this CouchbaseClient client, string key) where T : class
    {
        var json = client.Get<string>(key);
        return json == null ? null : JsonConvert.DeserializeObject<T>(json);
    }
}

您正在使用的扩展中的 Encoding.Default.GetBytes 似乎有可能在这里出错......

于 2012-11-09T16:35:23.150 回答
0

虽然我不熟悉 Couchbase 存储系统,但您肯定会遇到文本编码问题。我会检查您的 JSON 序列化程序是否正在序列化为 UTF-8 编码,并确保您在 Couchbase 端指定 UTF-8 编码。检查它们的 API 和存储类型以确保它们是基于 UTF-8 的。

于 2012-11-02T02:38:16.243 回答