misc.log

日常茶飯事とお仕事と

だれだよvarcharで宣言したのは。ユニコード文字がDBに入らない

SQL Serverを使った古いシステムの移植作業でDBの定義はそのまま使いまわすということで作業を進めていたのですが、なぜか投入した文字データが化ける。よくよく見てみると型宣言がvarcharになっていました。これですが、SQL Serverだと

となり、varchar型だとユニコードにしかない文字は入りません。ってか化けます。

ちなみに、nvarcharの列にInsertなどでデータを入れる際ですが、SQL Server Management StudioなどでSQL文を書くなら文字定数の前に「N」をつけないとユニコード文字として認識してくれないんですね。しりませんでした。いままでそういう文字に遭遇してなかったってことか。

たとえば魚の「ホッケ」を表す「𩸽(魚へんに花)」とか、50をまるで囲んだ「㊿」とかがそれに相当します。

文字コード「超」研究 改訂第2版

文字コード「超」研究 改訂第2版