我正在再次写关于我的编码问题...现在有一些代码示例。
简而言之:当保存到数据库输入数据时,某些语言特定字符(例如polish'ń'将无法保存 - 输入'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]
我不知道还有什么需要解决这个问题。帮助赞赏。
谢谢,Paweł
答案 0 :(得分:1)
您的表定义似乎是问题所在。姓氏用COLLATE Latin1_General_CI_AI
定义。 AI
部分表示Accent Insensitive。您需要将排序规则更改为Latin1_General_CI_AS,以保留数据。
答案 1 :(得分:0)
最后我发现了什么是错的。我在字符串之前错过了N前缀(它将字符串标记为UNICODE):
command.CommandText = "INSERT INTO users VALUES(N'" + Surname.Text + "')";
谢谢, 帕维尔