2012-10-31 40 views
2

我想將.NET序列化的JSON文檔插入到CouchBase中,但會得到非英文字符的亂碼。將非英文字符串放在CouchBase JSON文檔中時會出現亂碼

我試圖把:

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

,但我得到:

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

當CouchBase管理頁面查看它。

任何解決方案?

我正在使用ASP.NET 4.5和最新CouchBase API與CouchBase 2.0測試版。

回答

1

還注意到http://www.couchbase.com/forums/thread/gibrish-non-english-characters-using-c-client-and-coucbase-2-0-beta,但在這裏複製以供參考:

嗨Idanm

.NET客戶端存儲使用UTF-8的字符串。您是否正確地看到客戶端發送的數據,或者是管理控制檯中的混合字符串?

此外,您可以嘗試使用Newtonsoft.JSON進行Json序列化的新擴展方法。在.NET Couchbase客戶端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你使用可能會錯在這裏。 ..

0

儘管我不熟悉Couchbase存儲系統,但您肯定會遇到文本編碼問題。我會檢查你的JSON序列化器是否序列化爲UTF-8編碼,並確保你在Couchbase端指定了UTF-8編碼。檢查他們的API和存儲類型以確保它們基於UTF-8。