使用ASP.NET将unicode字符串插入SQL Server

时间:2012-12-27 12:15:30

标签: asp.net sql-server-2008 unicode

我创建了一个存储过程,如下所示:

CREATE PROCEDURE spIns_nav_Content
  @CategoryID nVarChar(50),
  @ContentText nVarChar(Max)
AS
  INSERT INTO dbo.nav_Content(CategoryID, ContentText, Active)
  VALUES (@CategoryID, @ContentText, 1)

在我的ASP.net应用程序中,我有一个文本框和一个按钮。我的aspx页面如下所示:

<div>
  <asp:Label ID="Label1" runat="server" Text="Text here"></asp:Label>
  <asp:TextBox ID="txtContent" runat="server" Font-Names="ML-TTKarthika"></asp:TextBox>
  <asp:Button ID="btnUpload" runat="server" Text="Upload" onclick="btnUpload_Click" />
  <asp:Label ID="lblContent" runat="server" Font-Names="ML-TTKarthika"></asp:Label>
</div>

点击btnUpload时,我需要将txtContent中的非英语(马拉雅拉姆语)文本作为unicode字符保存到数据库中。点击事件如下:

protected void btnUpload_Click(object sender, EventArgs e) {
  string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["TestMalayalamConnectionString"].ConnectionString;
  SqlConnection con = new SqlConnection(connectionString);
  con.Open();
  SqlCommand sqlCmd = con.CreateCommand();
  sqlCmd.CommandType = CommandType.StoredProcedure;
  sqlCmd.CommandText = "spIns_nav_Content";
  sqlCmd.Parameters.Add("@CategoryID", SqlDbType.NVarChar, 50).Value = "Rashriyam";
  sqlCmd.Parameters.Add("@ContentText", SqlDbType.NVarChar, -1).Value = txtContent.Text;
  sqlCmd.ExecuteScalar();
  con.Close();
  lblContent.Text = txtContent.Text;
}

当我看到我的db表时,ContentText中的值是英文的。我怎么能改变这个?

1 个答案:

答案 0 :(得分:1)

字体的用途是什么?

如果它将英文字符映射到外国字符集用于显示目的(据我所知),则DB将存储英文字符,因为它们是输入的内容。

我在字体预览中输入了hello,可以看到字母l中有两个字符相同,然后是o

实际上,您所做的只是在显示时间将输入的英文字符替换为外来字符集。基础角色仍然是英语。

要存储Unicode字符,您必须在输入控件中实际输入unicode字符。