的我在DB與此內容的項目:SQL查詢將返回錯誤的結果,因爲
B & b/v (stärrfood) - 1,0l
這:
var item = (from x in db.tblMyTable where x.item_name == "B & b/v (stärrfood) - 1,0l" select x).First();
回報,有沒有這樣的項目。我認爲這是因爲ä。該怎麼辦?
的我在DB與此內容的項目:SQL查詢將返回錯誤的結果,因爲
B & b/v (stärrfood) - 1,0l
這:
var item = (from x in db.tblMyTable where x.item_name == "B & b/v (stärrfood) - 1,0l" select x).First();
回報,有沒有這樣的項目。我認爲這是因爲ä。該怎麼辦?
如果您的數據庫項目實際讀取
B & b/v (stärrfood) - 1,0l
,而不是
B & b/v (stärrfood) - 1,0l
那麼這個問題是清楚的;數據庫中的字符串已被HtmlEncoded。所以真正的問題是如何從第二個字符串到第一個字符串。
通常我會建議:
string encoded = HttpUtility.HtmlEncode("B & b/v (stärrfood) - 1,0l");
// encoded = "B & b/v (stärrfood) - 1,0l"
和搜索編碼的變量,而不是。但是,HtmlEncode()
的結果很接近,但不完全等於您的數據庫記錄。 HtmlEncode()
使用數字實體而不是字母版本。
但是,這可能會爲您提供有關如何解決問題的線索。不過,我強烈建議不要搜索字符串,而是使用數字PK值。我認爲這個問題可能很難解決。
簡化查詢,然後查看實際返回的內容。
例如,您可以查找包含「ä」的所有記錄。如果你得到結果,「ä」不是問題。
如果您沒有得到結果,您可能會查找包含「B & b/v」的所有記錄。無論哪種方式,當你得到一個結果,看看結果是什麼,它是如何編碼的(是ASCII,UTF-8,...?)然後你就會知道如何修改你的查詢到找回正確的記錄。
祝你好運!
ä問題如'%ä%'無法返回結果。 –
如果您按名稱檢索項目,我猜這是您系統中的常量。是否有可能通過ID/PK取回物品? – rie819
@ rie819我在這裏按名稱檢索它,以簡化我的問題。 –
相關:http://stackoverflow.com/questions/4887447/sql-query-and-unicode-issue –