- - PR -
UTF-16の文字列格納で文字化け(SQLServer2005)
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-11-07 16:56
こんにちは。seek_doと申します。
現在、WindowsXP + SQLServer2005の環境で、データベース構築しています。 VB2005で作成したプログラムにて、UTF-16BE-BOM付きのテキストファイルを読み取り、DBにInsertしていますが、Insertした文字列の内、私用領域にあたる文字が全て「?」(半角のクエスチョン)になってしまいます。バイナリエディタで確認しましたが、一律同じコードでした。(私用領域以外の文字は問題ありません) ※テーブルからSELECT文でデータを持って来て、StreamWriterで出力したファイルにて確認しました。この際もエンコード指定しています。 Insert先カラムのデータ型は、「nvarchar(max)」です。 ファイルから文字列を取得する際は、StreamReaderを使用しています。(エンコードは、BigEndianUnicodeを指定。) 試しに、取得した文字列をStreamWriterでファイルに書き出してみましたが、問題なく文字コードを保ったまま出力されていました。 Insert文は、単純にINSERT INTOを使用しています。 どうにかして、文字の情報を保ったまま、DBへ格納したいのですが、良い方法はありませんでしょうか? よろしくお願い致します。 |
|
投稿日時: 2007-11-08 15:09
自己解決しました。
INSERTする際、UNICODE文字列と明示的に宣言すればOKとなりました。 方法としては、 INSERT INTO xxx VALUE(N'xxxxx') INSERTする文字列にNプレフィックスを付けるというものです。 こちらのページに記載されていました。 http://www.microsoft.com/japan/msdn/sqlserver/sql2005/bb330962.aspx の「SQL ステートメント内の文字列リテラルのエンコード」あたり 以上、報告でした。 |
1