締切済み

文字コードについて

  • 困ってます
  • 質問No.5370447
  • 閲覧数826
  • ありがとう数3
  • 気になる数0
  • 回答数1
  • コメント数0

お礼率 68% (126/183)

データベースの文字コードとアプリケーションの文字コードが異なる場合、書き込み(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
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全1件)

  • 回答No.1

ベストアンサー率 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)になります。
OKWAVE 20th Be MORE ありがとうをカタチに
このQ&Aのテーマ
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
このQ&Aにこう思った!同じようなことあった!感想や体験を書こう
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する

特集


より良い社会へ。感謝経済プロジェクト始動

ピックアップ

ページ先頭へ