はじめに
SQLServer2005にJIS2004で追加された新しい漢字を格納しようとすると、??で文字化けして格納されてしまうことがあります。このエントリはその原因と対処法について書きます。
JIS2004で追加された漢字が??で文字化けする
SQLServerにJIS2004で追加された第3水準漢字、第4水準漢字などを格納しようとすると、??で文字化けして格納されます。これらの文字はUnicodeでないと表現できません。SQLServerで Unicode文字列定数を処理するときは、すべての Unicode 文字列の前に N プレフィックスを付けないと正しく格納することができません。
SQL Server で Unicode 文字列定数を扱う場合には、Unicode 文字列の前に大文字の N が必ず必要です。これは、SQL Server Books Online の「Unicode データの使用」で説明されています。"N" プレフィックスは、SQL-92 標準の National Language を意味し、必ず大文字にする必要があります。Unicode 文字列定数の前に N を付加しない場合、その文字列は、SQL Server によって、使用される前に現在のデータベースの Unicode 以外のコード ページに変換されます。
SQL Server で Unicode 文字列定数を処理するときは、すべての Unicode 文字列の前に N プレフィックスを付ける必要がある
Unicode文字列を格納する場合
Unicode文字列をSQLServerに格納するには、以下のように定数の前にNという文字を指定して、クエリを実行する必要があります。
INSERT INTO TABLE ("ID", "NAME") VALUES ('1', N'ここにUnicode文字');
ソシム
売り上げランキング: 81729