2010-09-15 67 views
1

我正在再次写关于我的编码问题......现在一些代码示例。Sql server 2005与ASP .NET编码问题

简而言之:保存到数据库输入数据时,波兰语'ń'等语言specyfic字符不会保存 - insted'n'被保存。另一方面,字符串:Adamsæbler,与æ是储蓄。

这里是代码begind代码,不会保存的东西,并显示数据:

Default.aspx的有meta标签:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

表看起来是这样的:

CREATE TABLE [dbo].[Users]([Surname] [nvarchar](50) COLLATE Latin1_General_CI_AI NULL) ON [PRIMARY] 

我不知道还有什么需要解决这个问题。帮助赞赏。

谢谢,Paweł

+0

啊,当我发出:SELECT姓氏,CAST(姓氏为varbinary(30))AS表达式1来自用户的,字符“ñ”的字符是0x6E00 - 所以在数据库中'n'字符被存储。 – dragonfly 2010-09-15 20:45:17

+0

如果您在'Button1_Click'中调试'Surnme.Text'是否包含正确的值?如果您使用SQL Profiler,那么看起来什么价值被发送到SQL Server? – 2010-09-15 21:02:00

+0

是的。 Surname.Text具有正确的价值。同时使用Encoding.Unicode.GetBytes检查它将返回“好”字节。我还没有用Profiler检查过它。 – dragonfly 2010-09-15 21:19:39

回答

0

终于我明白了什么是错的。我错过了ñ前缀字符串之前(它标志着字符串UNICODE):

command.CommandText = "INSERT INTO users VALUES(N'" + Surname.Text + "')"; 

感谢, 帕维尔

1

您的表定义似乎是问题。姓氏用COLLATE Latin1_General_CI_AI定义。 AI部分表示重音不敏感。您需要将排序规则更改为Latin1_General_CI_AS,以保留数据。