1

エンコーディングの問題についてもう一度書いています...コードサンプルをいくつか示します。

簡単に言うと、データベース入力データに保存するとき、ポーランド語の「ń」などの一部の言語固有の文字は保存されず、挿入された「n」が保存されます。一方、string: 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]

問題を解決するために他に何が必要かわかりません。助けていただければ幸いです。

ありがとう、パヴェウ

4

2 に答える 2

1

テーブル定義に問題があるようです。姓は で定義されCOLLATE Latin1_General_CI_AIます。このAI部分は、Accent Insensitive を示します。データを保持するには、照合順序を Latin1_General_CI_AS に変更する必要があります。

于 2010-09-15T22:41:30.583 に答える
0

最後に、何が間違っているのかを理解しました。文字列の前にNプレフィックスがありませんでした(文字列をUNICODEとしてマークします):

command.CommandText = "INSERT INTO users VALUES(N'" + Surname.Text + "')";

ありがとう、パヴェウ

于 2010-09-17T11:48:19.493 に答える