1

我再次写下我的编码问题......现在有一些代码示例。

简而言之:当保存到数据库输入数据时,某些语言特定的字符,如波兰语 'ń' 不会保存 - insted 'n' 被保存。另一方面,字符串:Adams æbler,其中 æ 正在保存。

这是代码开始的代码,可以保存内容并显示数据:

    protected void Page_Load(object sender, EventArgs e)
    {
        Label1.Text = "";
        using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["encoding"].ConnectionString))
        {
            conn.Open();
            var command = conn.CreateCommand();
            command.CommandText = "SELECT * FROM users";
            var reader = command.ExecuteReader();
            while (reader.Read())
            {
                Label1.Text += reader.GetString(0);
            }                
        }
    }

    protected void Button1_Click(object sender, EventArgs e)
    {
        using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["encoding"].ConnectionString))
        {
            conn.Open();
            var command = conn.CreateCommand();
            command.CommandText = "INSERT INTO users VALUES('" + Surname.Text + "')";
            command.ExecuteNonQuery();
        }  
    }

Default.aspx 具有元标记:

<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]

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

谢谢,帕维尔

4

2 回答 2

1

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

于 2010-09-15T22:41:30.583 回答
0

最后我弄清楚出了什么问题。我错过了字符串之前的 N 前缀(它将字符串标记为 UNICODE):

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

谢谢,帕维尔

于 2010-09-17T11:48:19.493 回答