小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


SQLServerにJIS2004の文字を格納すると??で文字化けする

はじめに

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 プレフィックスを付ける必要がある はてなブックマーク - SQL Server で Unicode 文字列定数を処理するときは、すべての Unicode 文字列の前に N プレフィックスを付ける必要がある

Unicode文字列を格納する場合

Unicode文字列をSQLServerに格納するには、以下のように定数の前にNという文字を指定して、クエリを実行する必要があります。

INSERT INTO TABLE ("ID", "NAME") VALUES ('1', N'ここにUnicode文字');

SQL Server 2008の教科書―基礎から実践まで学べる
松本 美穂 松本 崇博
ソシム
売り上げランキング: 81729