SQL Serverストアドプロシージャを呼び出す以下のようなコードがあります
名には、電子邮箱のような値が渡されます
sCmd.Parameters.Add("@FName", SqlDbType.NVarChar);
sCmd.Parameters.Add("@LName", SqlDbType.NVarChar);
sCmd.Parameters["@FName"].Value = firstname;
sCmd.Parameters["@LName"].Value = lastname;
ストアド プロシージャの場合:
@FName nvarchar(200),
@LName nvarchar(200)
INSERT INTO [dbo].[testunicode]
([col1]
,[col2])
VALUES
(@FName
,@LName);
しかし、データは ???? として挿入されます。テーブルの列でさえNVarchar(max)
です。
ストアドプロシージャに渡す前に「N」を追加してみました。また、以下も試しました。しかし、それでも同じです。そうする最善の方法は何ですか?
Encoding tc = Encoding.GetEncoding("BIG5");
byte[] bytes = tc.GetBytes(firstname);
firstname = Encoding.Unicode.GetString(bytes)