• ベストアンサー

SQLServerでSJIS 第3・第4水準を扱う

SQLServerでSJIS 第3・第4水準に対応したシステムを作るにはどうすれば良いのでしょうか? 照合順?か何かを変えると扱えたり、 バイナリデータ型でデータを格納すると、コード値から復号できるなり、 そういう方向なのかなとは想定しているのですが、これ以上は想像できていないのです。。 .

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

  • ベストアンサー
  • chie65535
  • ベストアンサー率43% (8525/19381)
回答No.1

>SQLServerでSJIS 第3・第4水準に対応したシステムを作るにはどうすれば良いのでしょうか? データベースのテーブル内のフィールドを、Unicode対応のフィールドで設計し、Unicodeでデータを保存します。 つまり、フィールドタイプchar、varchar、textの代わりにnchar、nvarchar、ntextを使います。 SQLSreverの内部コードページはcp932(MS932)になっているので、第三水準、第四水準の一部の漢字が扱えません(cp932では、第三水準、第四水準の一部の漢字しか割り当てられていません) 第三水準、第四水準の全部の漢字を格納するには、Unicodeが必須となります。 フィールドタイプnchar、nvarchar、ntextを使う事により、データベースに「Unicode」で保存されるようになります(言い換えると、データベースの入出力時に、Unicodeにコード変換する必要がある) ですので、システム全体(アプリケーション本体)も「内部の文字コードにUnicodeを使う」と良いと思います(と言うか、第三水準、第四水準の全部の漢字をサポートするには、内部文字コードも、外部とのインターフェース部分も、何もかも「Unicodeで行なう」必要があります)

paranoia23
質問者

お礼

ありがとうございます! 理解できました!

関連するQ&A

  • SJISを指定したページに使われる文字コードについて

    headerでSJISを指定したページを、UNIX系のシステムで開いて、formに文字を入力した場合、入力した文字の文字コードもSJISなのでしょうか?そこから送信されるデータもSJISとなるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • HTML
  • SQLServerのデータをクラウドに保管したい

    外部ネットワーク(クラウド)経由で、SQLServerのデータをリアルタイムで更新するという、 システム運用を考えています。 Web経由のランタイムデータを更新するという経験がなく、どのような運用をすればよいのか、悩んでおります。 このような場合に、推奨できる運用方法がわかるかたいらっしゃいましたら、ぜひご教授いただきたく、よろしくお願いいたします。 希望としては、 ・クラウド上にファイルサーバもしくはLAN-HDDを用意して、そこにSQLServerのデータを保管する。 ・VPN経由で会社のサーバ(SQLServer)と接続。 ・システムで更新をすると、クラウド上のデータが更新される。 なにぶん、想定した内容での記述ですので、現実的ではないかもしれませんが、ぜひご回答いただければ幸いです。

  • 拡張文字のチェック

    ファイルから文字列データを読み込んでDBに格納する再に 文字列データ内に第二水準及び、拡張文字が入っていたらNGを出すというチェックをしたいのですが、うまいこといかずに詰まってしまいました。 今のところ正規表現で該当文字をSJISのコードで指定してるのですが思ったとおりになりません。 環境は 読み込みファイルはSJIS、DBはEUC PHP4.3.9 DBはPostgresです。 よろしくお願いいたします。

    • 締切済み
    • PHP
  • unsigned char SJis[2]からstd::stringに変換

    開発環境は VC++ 2008 Express Edition あるDLLの関数で戻り値としてShiftJISの1文字が格納された unsigned char SJis[2] が返され,これを呼び出し側のプログラムで使っている文字列 std::string str に順に追加していこうと思っています. そこで, unsigned char tmpSJis[3]; tmpSJis[0] = SJis[0]; tmpSJis[1] = SJis[1]; tmpSJis[2] = '\0'; str += std::string(tmpCode); というコードを書いてループさせたのですが, error C2440: '<function-style-cast>' : 'unsigned char *' から 'std::string' に変換できません。 というエラーが出てしまいうまく変換できません. これを解決する方法はありませんか?

  • C# ファイル→バイナリ→ファイルの変換

    いつもお世話になっています。 只今、エクセルやワードなどのファイルをバイナリデータに変換し DBへ格納するプログラムを作成しています。 使用しているDBはSQLServerです バイナリデータに変換して格納することは出来ました ですが、そこから元のファイルに戻す方法が分かりません やりたいことは  1:バイナリデータを復元  2:ダウンロードする  3:ダウンロードすることなく開く の3つです 調べ方が悪いのか、全く見つからず困っています。 WebではなくWindowsフォームがベースのプログラムです サンプルや手順などがわかる方、よろしくお願いします。

  • エクセルに入力したデータでJIS第2水準の文字を検索することはVBA等で可能でしょうか?

    エクセルにて日々の受注データを登録するシステムを作っています。 このデータを下位の伝票発行システムに渡すに当たって、JIS第2水準や拡張文字コードの漢字を無理にでもJIS第1水準に変更する必要に迫られています。 自動的に変更できれば何よりなのですが、せめてJIS第1水準以外の文字だけをフォントカラーを赤にする等ができないかと考えております。 テキストファイルならエディタでこのようなこと簡単にできますが、エクセルでできないものでしょうか?

  • Excelマクロからのバイナリデータ取得について

    初めて質問します。 SQLServerにvarbinary(MAX)型で写真データが格納されています。 その写真データをExcelマクロの処理にてシートに貼り付けたいと考えています。 手順として、 (1)バイナリデータを復元し、ファイルを任意のディレクトリに格納。 (2)格納した画像ファイルを指定したセルに貼り付ける。 (1)の手順からつまづいており、先へ進めません。 実現方法はあるのでしょうか?

  • SQLServerに格納される文字コード

    初歩的な質問になります。 SQLServer2005Expressを使用した デスクトップアプリケーションをC#で作ろうと思っています。 将来的に英語、韓国語などのデータも扱えるようにしたいと思い DB内の文字コードをUTF-8にしたいと考えていますが、 DBを作成する際の設定などを見ましたがよく分からない状態です。 Googleで検索をして、 (1)文字列をUnicodeで扱う場合はnvarchar型など  Unicodeを扱える型を使用する。 (2)照合順序なども考慮する必要がある。  ※照合順序の言語が設定がおかしいと   Insert時に文字化けがおきるみたい。  http://social.msdn.microsoft.com/forums/ja-JP/sqlserverja/thread/8b8bbf10-04c6-4023-8e1e-7531375e2f9d/ などのページを見つけましたが、 いまいち良く分かりません。 照合順序は文字データの文字列の並べ替え方法や 比較方法に関する規則だと思っていたので なんで文字化けがおきるのかなど。。。 他言語を扱う場合の考慮点などあれば どうかアドバイスいただけないでしょうか。

  • PHP+MySQLでSJISからEUCへの文字コード変換方法を教えてください。

    こんにちは。いつもお世話になっております。本来であれば自サーバーで検証してから質問すべきだとは思いますが、現在稼動中のサーバーしかなく、止めることができないので質問させていただきます。 現在、PHP+MySQLでサイトをSJISコードで運営しておりますが、「表」「能」等のSJISの文字化け対策が面倒になってきまして、EUCに変換してしまおうかと検討しております。 現状の日本語に関する設定は下記のようになっております。 ▼MySQL(my.cnf) バージョン:4.1.20 [mysqld] default-character-set=sjis init_connect="SET NAMES sjis" [mysql.server] default-character-set=sjis [mysqldump] default-character-set=sjis [mysql] default-character-set=sjis ▼PHP(php.ini) バージョン:4.3.9 mbstring.internal_encoding = SJIS mbstring.http_input = pass mbstring.http_output = SJIS mbstring.encoding_translation = On mbstring.detect_order = auto PHP内でMySQLと接続した直後に次のようにSJISを指定しています。 $sql="SET NAMES sjis"; mysql_query($sql); ちなみに、MySQLはMySQLadminで管理しておりますが、テーブルの照合順序は全てsjis_japanese_ciになっています。 上記のような内容ですが、この場合SJISからEUCに変換する場合の手順として、下記の流れでよろしいでしょうか? 1.PHPファイルをEUCコードに変換。 2.php.iniのSJISの部分をEUCに変換。 3.MySQLの設定ファイルのsjisの部分をujisに変換。 4.MySQLのテーブル内のデータを全てエクスポートして、外部エディタでEUCに変換後インポートする。 特に上記4の作業はテーブル数及びデータが膨大なため結構な作業になってしまいそうです。 もしもっと楽な方法があればご教授いただければ幸いです。なお、サーバーはRed Hat Enterprise Linuxです。

    • ベストアンサー
    • PHP
  • javaバイナリ変換したデータのファイル出力

    現在、 String test_st = "0123456789abcdef"; というデータを byte[] bytes = test_st.getBytes("UTF-8"); このコードでバイナリ変換したのですが、このbytesに格納したバイナリデータたバイナリファイルとして出力したいのですが、どのようにしたらよいかご教授よろしくお願い致します。 BinaryFileWriter writer = new BinaryFileWriter(); このようなコードで出力できるとのサンプルもあったのですが、うまくいきません。 どうぞ、よろしくお願い致します。

    • ベストアンサー
    • Java