• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SQL Server のキャラクターセット(内部文字コード)は何処で定義するのでしょうか?)

SQL Serverのキャラクターセットとは?定義場所や文字化け対策について知りたい

このQ&Aのポイント
  • SQL Serverのキャラクターセット(内部文字コード)はどこで定義するのか、そして文字化け対策はどのように行えば良いのかについて教えてください。
  • Oracleで使用していた経験から、DB内部のキャラクターセットとクライアントの文字セット(NLS_LANG)を意識する必要があることを学びました。SQL Serverでも同様の問題が発生する可能性があるため、キャラクターセットの定義場所と文字化け対策について教えてください。
  • システム構築時には文字化けを避けるために注意が必要です。SQL Serverのキャラクターセットの定義場所と文字化け対策について知りたいので、教えていただけますか?

質問者が選んだベストアンサー

  • ベストアンサー
  • tantana
  • ベストアンサー率100% (1/1)
回答No.2

Windowsのロケールの設定を日本語にした状態でSQLServerをインストールした場合、cp932がデフォルトの照合順序になります。照合順序については参考URLをご覧下さい。 SQLServerではわかりませんが、PostgresではJDBCドライバ部分で変換していたように記憶しています。ODBCドライバではAutoTranslateという機能があります。 このため、ODBC接続で何も考えずにvarcharを使用するとcp932になります。

参考URL:
http://www.microsoft.com/japan/msdn/sqlserver/sql2005/bb330962.aspx

その他の回答 (1)

  • tantana
  • ベストアンサー率100% (1/1)
回答No.1

1.2.の質問からはずれている回答かもしれませんが・・・ SQLServerでは使用するデータ型によって文字コードが指定されます。 ・データ型がchar、varchar、textの場合 MS932(≒Shift_JIS) 日本語環境の場合 ・データ型がnchar、nvarchar、ntextの場合 Unicode 同一システム内でMS932を使用するか、Unicodeを使用するかどちらかに統一することができれば、システム内で文字化けが発生することはありません。 ただ、char系は使用するバイト数、nchar系は使用する文字数で確保するサイズを指定するので注意が必要です。 例えば、varchar(80)は80バイト確保されますので半角文字で80文字分、全角文字で40文字分保存できますが、nvarchar(80)は80文字分確保されるので全角半角関係なく80文字きっかり保存できます。

orazakkun
質問者

お礼

tantanaさん回答ありがとうございます。 データ型によって内部でのキャラクターセットが異なる点理解しました。 ついでに以下の点についても教えてください。 「日本語環境の場合」と条件を記載されておりますが、 具体的には「何を持って」日本語環境となるのでしょうか? またDB内部のキャラクタセットと、クライアント側のキャラクタセットが 異なる場合(例:VARCHARのデータをJDBCにてアクセスするような場合) MS932→Unicode(UTF02?)への変換は何処で行われるのでしょうか? ご存知であれば教えてください。 困り度を「暇なときにでも」としたせいか、 私の質問が的を外しているのか、どなたからも コメントがなく不安でおりました。 tantanaさんのコメントに内心かなりホッ!としています。 ありがとうございました。

関連するQ&A