的我在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 –