我從各種來源獲取各種文檔的非結構化文本。我正在使用Sql Server Compact Edition 3.5。爲什麼Sql CE會改變我的unicode值?
我創建了一個帶有唯一字的查找表,並通過一個ID引用它們作爲標識列。我發現問題似乎是unicode。
插入術語「定義」後,我對已經具有「定義」的行執行唯一鍵約束。如果仔細檢查兩者,你會發現我插入的值不是'f'和'i',而是單個字符。然而,SqlCe試圖將它轉換爲「f」和「i」。一個字中有十個字符,另一個字符中有十個字符,但SqlCe認爲它們是相同的。
表列是nvarchar。
我將參數指定爲nvarchar。
查詢是非常簡單的:
cmd.CommandText = "INSERT INTO dictionary(lemma) VALUES(?);";
DbParameter lemma = cmd.CreateParameter();
cmd.Parameters.Add(lemma);
for (int i = 0; i < terms.Count; i++)
{
lemma.Value = terms[i].Key;
cmd.ExecuteNonQuery();
}
我也試過:
cmd.CommandText = "INSERT INTO dictionary(lemma) VALUES(?);";
SqlCeParameter lemma = new SqlCeParameter("lemma", SqlDbType.NVarChar);
cmd.Parameters.Add(lemma);
for (int i = 0; i < terms.Count; i++)
{
lemma.Value = terms[i].Key;
cmd.ExecuteNonQuery();
}
在什麼我插入,爲 '網絡連接' 字符的字節是1 251,如反對 'f' 和 'i' 的105 0,110 0 參見以下:
{byte[20]}
[0]: 100
[1]: 0
[2]: 101
[3]: 0
[4]: 1
[5]: 251
[6]: 110
[7]: 0
[8]: 105
[9]: 0
[10]: 116
[11]: 0
[12]: 105
[13]: 0
[14]: 111
[15]: 0
[16]: 110
[17]: 0
[18]: 115
[19]: 0
而值在DAT ABASE(一個SQLCE被看到,因爲違反唯一鍵的)是:
{byte[22]}
[0]: 100
[1]: 0
[2]: 101
[3]: 0
[4]: 102
[5]: 0
[6]: 105
[7]: 0
[8]: 110
[9]: 0
[10]: 105
[11]: 0
[12]: 116
[13]: 0
[14]: 105
[15]: 0
[16]: 111
[17]: 0
[18]: 110
[19]: 0
[20]: 115
[21]: 0
我怎樣才能得到的SQL Server CE正確地將價值?
編輯:更正了上面顯示的代碼。
它是nvarchar數據類型嗎? – Holystream 2011-02-15 23:00:23
插入的值來自C#字符串 – McAden 2011-02-15 23:18:22