SQL Server&ASP .NET编码问题

问题描述:

我的页面中增加了utf-8元元素+ sql服务器编码也是utf。但是,当我创建记录并尝试发出SELECT语句,并且条件包含像'ń'这样的POLISH字符时,我看不到任何结果。任何想法我错过了什么?SQL Server&ASP .NET编码问题

也支持SQL Management Studio中显示了与波兰的字符导致的,但我不相信它....我猜东西是错误的将记录到数据库中......

或者我该怎么解决呢?

谢谢你,帕维尔

+1

什么是表的定义是什么?你的查询是什么样的? – 2010-09-15 15:14:20

+0

嗨,这是简单的查询,如:SELECT * FROM用户其中username = 'PWaszczyński'。列UserName的类型是nvarchar(50),没什么特别的。正如我所说的:发出查询:SELECT * FROM用户其中username LIKE“PWaszczy%”将返回该行,但是当我将其更改为“PWaszczyń%”失败。同时发出SELECT * FROM Users将在SQL Management Studio中以'ñ'字符显示行。 – dragonfly 2010-09-15 17:47:34

我有同样的问题,我通过在WHERE子句中用“N”加前缀来解决它。

例如,我有一个包含超过21,000个人姓名的表'Person'。最近一位姓“Krzemiński”的人最近被添加到数据库中,并且当该行被显示时该名称显示正常(即,“ñ”字符被正确显示)。然而,无论是下面的语句返回任何记录:

SELECT * FROM WHERE人= FamilyName '克热明斯基'
SELECT * FROM人回来,在那里FamilyName LIKE 'Krzemiń%'

...但这些语句都正确的记录:

SELECT * FROM WHERE人LIKE FamilyName 'Krzemi%'
SELECT * FROM WHERE人LIKE FamilyName 'Krzemi%滑雪'

当我执行以下语句:
SELECT * FROM人WHERE FamilyName LIKE“%N%”

我得到包含字母“n”(不区分符号)所有8900条记录,但我获取包含记录的“N”字符。我用波兰所有的字符(ąćęłńóśźż)试过这个最后一个查询,除了“ó”之外,所有这些字符都表现出相同的行为(即,返回所有带有低等同ASCII字符的记录)。奇怪的是,“ó”按原样工作,只返回FamilyName字段中带有“ó”的记录。

在任何情况下,解决方法是在搜索条件前面添加“N”,以便将其显式声明为Unicode。

因此,下面的语句:

SELECT * FROM WHERE人LIKE FamilyName N '%N%'
SELECT * FROM WHERE人= FamilyNameN'Krzemiński”

...都返回正确的记录集。

我很困惑的原因是我有很多奇怪的变音符的记录,即使没有“N”前缀,它们也会返回正确的记录。到目前为止,我发现只需要明确的“N”前缀的字符就是波兰语字符。

希望这可以帮助....

阿罗哈, 丰富

+0

这是问题所在。我不知道SQL Server中的N前缀。 – dragonfly 2011-04-20 20:43:17

只需使用nvarchar的,而不是VARCHAR作为列保存记录的数据类型。

这个链接也可能会有所帮助:

http://support.microsoft.com/kb/239530