软件版本为VS2012旗舰版,数据库为VS2012集成数据库。
首先要统一网页编码为:utf-8,只用注意下面红字的部分
前台代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
</div>
</form>
</body>
</html>
其次就是建数据库时,将要存储中文的列名的数据类型设置为nvarchar()类型
我建的数据库:
CREATE TABLE [dbo].[Name] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[Chinese] NVARCHAR (50) NULL,
PRIMARY KEY CLUSTERED ([Id] ASC)
);
最后,向数据库中插入中文的代码:
后台代码:
using System;
using System.Collections.Generic;
using System.Linq;using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.SqlClient;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ }
protected void Button1_Click(object sender, EventArgs e)
{ SqlConnection con = new SqlConnection();
con.ConnectionString = @"Data Source=(LocalDB)\v11.0;AttachDbFilename=E:\ASP.NET\jiejuezhongwenluanma\App_Data\Database.mdf;Integrated Security=True"; con.Open();
string sql = "insert into Name(Chinese) values(N'" + TextBox1.Text + "')";
SqlCommand cmd = new SqlCommand(sql, con);
cmd.ExecuteNonQuery();
con.Close();
}
}
注意插入语句中红色的大 N,并且看清它的位置,它是关键。在没有大N之前,TextBox1.Text里的汉字会变成问号存到数据库,所以,显示出来也是问号。
当加了大N之后,TextBox1.Text里的汉字就会正常的存到数据库,所以,显示出来也就是正常的汉字。
下面是截图: