關於ASP.NET用VS2012出現數據庫內容漢字亂碼(中文亂碼)或者漢字變問號(中文變問號)的解決辦法,非常簡單。

軟件版本爲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裏的漢字就會正常的存到數據庫,所以,顯示出來也就是正常的漢字。

下面是截圖:




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章