- - PR -
データベースのキャラクタセット
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2007-01-25 16:43
.NET+Oracle10g/SQLServer2005で新規開発をしようとしています。
グローバル対応(中国語・韓国語入力可)やら、 Vista対応やらを考え、Unicode対応したいと考えています。 おすすめ方法はありますか? たとえばOracleだと、 DBのキャラクタセットごとAL32UTF8にする方がいいとか、 AL16UTF16のNVarcharを使った方がいいとか、ありますか? あと、両DBのXML型を使おうと考えています。 XML内にも多言語があっても問題なく動作したいです。 ということはOracleのDBごとAL32UTF8としなければならないのでしょうか? SQLServerは特に設定はいらないのでしょうか?? 勉強不足で申し訳ありませんが、ご教授下さればありがたいです。 |
|
投稿日時: 2007-01-28 16:10
Oracleの場合、最初からならば、キャラクタセットをAL32UTF8にして作成すればいいと思います。
|
|
投稿日時: 2007-01-29 16:25
返答ありがとうございます。
最初からAL32UTF8にしたとき気になるのが、文字長の指定方法です。 エンドユーザからしてみれば、「最大入力可能文字数は○文字です。」 とあった方がわかりやすいかと思います。 NLS_LENGTH_SEMANTICSを'CHAR'にすれば、 それが可能になるようでした。 けれど、SQLServerにはvarchar(n)のnはバイト数です。 文字数に指定する方法はあるのでしょうか? |
|
投稿日時: 2007-01-29 17:00
こんにちは。
nvarcharを使ってください。 |
|
投稿日時: 2007-01-31 23:01
ご回答ありがとうございます。
OracleとSQLServerで違うスキーマ(DB定義)を使いたくないので、 どちらも、英数コード以外が入る箇所は、 NVarcharを使用するのが一番よいということでしょうか。 ちょっと話はそれますが、 最近のWindowsはUnicodeでデータを扱っているのですよね? けれどもSQLServerのvarcharは、半角英数1バイト、かな漢字2バイトということは、 Shift_JISで保存されているのでしょうか? 一方、nvarcharはUnicodeで保存されるのでしょうか? ということはVistaで追加される文字はvarcharには入らない・・・? 結局varcharは使えない・・・? このあたりの記述があるサイト等ありましたら、教えてください。 |
|
投稿日時: 2007-01-31 23:30
自己レス。
ありました。 SQL Server 2005 における JIS2004 対応について寄せられる質問と回答 http://support.microsoft.com/kb/931785/ja |
|
投稿日時: 2007-02-01 17:50
こんな感じで考えました。
●SQLServer2005の場合 照合順序は「Japanese_90_CI_AS」がいいらしい。 ・英数字しか入らないカラム:varchar(n) ※nvarcharはUCS-2なので英数字なら容量が倍になってしまう? ・英数字以外が入るカラム(Unicode対応):nvarchar(n) ・長いテキストデータ:nvarchar(max) ・XMLデータ:xml ●Oracle10gR2の場合 データベースキャラクタセットを「AL32UTF8」にする。 ・英数字しか入らないカラム:varchar2(n) ・英数字以外が入るカラム:varchar2(n char) ・長いテキストデータ:clob ・XMLデータ:xmltype ※英数字しか入らないとしたカラムに誤って英数字以外を入れると、 Oracleが先に文字数オーバーになりますが。 あと、SQLServerのSQL文でUnicodeを使うには、 「N'××'」のようにNをつけないといけないことに、はまりました。 普通に使えるようにはならないもんなのでしょうかね・・・。 |
1