【发布时间】:2011-04-12 21:45:46
【问题描述】:
我再次写下我的编码问题...现在有一些代码示例。
简而言之:当保存到数据库输入数据时,某些语言特定的字符(如波兰语“ń”)将不会保存 - 插入的“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]
我不知道还需要什么来解决这个问题。帮助表示赞赏。
谢谢,帕维尔
【问题讨论】:
-
啊,当我发出:SELECT Surname, CAST(Surname AS VARBINARY(30)) AS Expr1 FROM Users,所谓的“ń”字符的字节为 0x6E00 - 所以在数据库中存储“n”字符.
-
如果您在
Button1_Click中调试,Surnme.Text是否包含正确的值?如果您使用 SQL Profiler,会向 SQL Server 发送什么值? -
是的。 Surname.Text 具有正确的值。还使用 Encoding.Unicode.GetBytes 检查它会返回“好”字节。我还没有用分析器检查它。
-
并分析检查:INSERT INTO users VALUES('ń') 已发送...
-
我觉得这个问题看起来很眼熟。我刚刚又看到了你的另一个问题。
标签: .net asp.net sql-server encoding utf-16