プロが教えるわが家の防犯対策術!

データベースの文字コードとアプリケーションの文字コードが異なる場合、書き込み(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バイトで扱われることは理解しています。

A 回答 (1件)

以下のリンクが参考になると思います。



Unicode を使用するサーバーと Unicode 以外を使用するクライアント間のデータ変換の管理
http://technet.microsoft.com/ja-jp/library/ms190 …

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)になります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す