- 締切済み
文字コードについて
データベースの文字コードとアプリケーションの文字コードが異なる場合、書き込み(INSERT)や取り出し(SELECT)はどのような扱いになるのでしょうか? イメージ的にはデータベースがUTF-8の設定の場合に、アプリケーションがSJISを指定し読み取ったデータをINSERTする場合や、SELECTで取り出す場合に何が問題になるのかを知りたいです。 質問の意図はアプリケーションやデータベースを国際化を意識して作成したく、アプリケーションはVB.NETで、CSVのファイルをsjisを指定して読み込み、それを書き込む際にそのままInsertやSelectを指定して問題ないのか、そもそもCSVファイルにはUTF-8で書き込み、読み込みもUTF-8ですべきなのでしょうか? ちなみにUTF-8がAsciiが1バイト、日本語が3バイトで扱われ、SJISの場合は、Asciiが1バイト、日本語が2バイトで扱われることは理解しています。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- jamshid6
- ベストアンサー率88% (591/669)
以下のリンクが参考になると思います。 Unicode を使用するサーバーと Unicode 以外を使用するクライアント間のデータ変換の管理 http://technet.microsoft.com/ja-jp/library/ms190252(SQL.90).aspx INSERTをどういう風に行うイメージなのかわかりませんが、 sSQL = "INSERT INTO TABLE1 VALUES ('" & sFileData & "')" といった方法を考えているのであれば、 sSQL = "INSERT INTO TABLE1 VALUES (N'" & sFileData & "')" のようにNプレフィックスをつけないと化けるはずです。 データベースの照合順序(のコードページ)を日本語以外にしないと確認しづらいと思いますが。 なお、根本的なところを書いておきますと、SQL ServerのUnicodeはUCS-2で、UTF-8ではありません。 データベース側で設定できるのはデータ型(Unicode型か非Unicode型)だけであり、Unicode型ならばUCS-2、非Unicode型で日本語の照合順序を選択すると、コードページ932(いわゆるS-JIS)になります。