2010-09-15 124 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,以保留數據。