![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_14.png?e8efa67)
SQL Server超初心者です。(Oracleについては約1年ちょっとの経験はあります)どうぞよろしくお願いします。
今回SQL Server2005 を使って簡単なシステムを構築する事になりました。
SQL Serverが扱う文字コートについて教えてください。
Oracleを使っていた時の経験としてDB内部のキャラクターセットと
クライアントで使う文字セット(NLS_LANG)を意識しておかないと、いろんな「文字化け」問題に遭遇した時に対応できませんでした。
きっとSQL Serverにおいても同じような事ではないかと思いここに質問させていただきます。
以下2点についてどなたかコメント願います。
1.(Oracleでいうキャラクターセット)はどこで定義するのでしょうか?
2.OracleでいうNLS_LANGに相当するものはあるのでしょうか?
(ひょっとしたらマイクロソフト製品なのでサーバもクライアントもCP932固定なのでしょうか?)
根本的にはシステム構築する上で『極力文字化けに遭遇したくない』思い出このような質問をさせていただきました。
『文字化け』について注意点などありましたら合わせてコメントいただければ助かります。
以上よろしくお願いします。
No.2ベストアンサー
- 回答日時:
Windowsのロケールの設定を日本語にした状態でSQLServerをインストールした場合、cp932がデフォルトの照合順序になります。
照合順序については参考URLをご覧下さい。SQLServerではわかりませんが、PostgresではJDBCドライバ部分で変換していたように記憶しています。ODBCドライバではAutoTranslateという機能があります。
このため、ODBC接続で何も考えずにvarcharを使用するとcp932になります。
参考URL:http://www.microsoft.com/japan/msdn/sqlserver/sq …
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文字きっかり保存できます。
tantanaさん回答ありがとうございます。
データ型によって内部でのキャラクターセットが異なる点理解しました。
ついでに以下の点についても教えてください。
「日本語環境の場合」と条件を記載されておりますが、
具体的には「何を持って」日本語環境となるのでしょうか?
またDB内部のキャラクタセットと、クライアント側のキャラクタセットが
異なる場合(例:VARCHARのデータをJDBCにてアクセスするような場合)
MS932→Unicode(UTF02?)への変換は何処で行われるのでしょうか?
ご存知であれば教えてください。
困り度を「暇なときにでも」としたせいか、
私の質問が的を外しているのか、どなたからも
コメントがなく不安でおりました。
tantanaさんのコメントに内心かなりホッ!としています。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Tverは無料でしょうか?
-
SQLのエラー(~付近に不適切な...
-
ACCESS2007 フォーム 「バリア...
-
sqlserverで集計結果をUPDATEし...
-
SQL 期間内の実施数を合計したい
-
SQLについて質問です。 テーブ...
-
SQLサーバーのやり方
-
sqlserverで対象のレコードを削...
-
SQL クエリ データ数
-
SQL Oracle serverにって質問で...
-
SQL Server management studio ...
-
サーバー破壊
-
Visuaal Studio Community 2022...
-
Access2021 「ISNULL関数には引...
-
甘いものがすきなのってなおせ...
-
SQLて何ですか!
-
生え際から顎先まで17.5 頭頂か...
-
sql serveについて
-
SQLを駆使したデータ抽出ってど...
-
自己相関サブクエリと自己結合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
MySQLカラム名は日本語と英数字...
-
SQL Server のキャラクターセッ...
-
MySQLの日本語LIKE検索について
-
文字コードMS932(Windows-31J...
-
SQLで日本語データを入力したい...
-
MYSQL 4.0.x から 5.X系への移行
-
MySQL 文字化けについて
-
日本語のデータがインポートで...
-
存在しているファイルがロード...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
副問合せにLIKE文を使う方法は...
-
ODP.NETのバージョン確認
-
VBAで変数内に保持された二次配...
-
like句を使って日本語を検索す...
-
ERROR 1045 (28000) (using pas...
-
RPMのmysqlとmysql-serverの違い
-
プライマリーキーの昇順でソー...
-
mysqlへのインポート処理がうま...
-
INT型は金額の型に使用するべき...
おすすめ情報