dポイントプレゼントキャンペーン実施中!

ある関数に文字列を渡して各文字コードを取得するプログラムを作成しようとしています。
基本的な文字のコードは取得できるのですが、JIS拡張漢字のほとんどが正しく取得できません。
失敗している文字は内部的に「?」(3F)となってしまいます。
例:拡張漢字のコード値(SJIS:81B2)を変換するとコード値が「3F」になってしまう。(テキストエディタなどで文字化けすると「?」に化けるのと同じなのかな?)
正しく文字コードを取得する方法をご存知の方、またヒントなどありましたらよろしくお願いします。
【環境】WindowsXP
    VisualBasic2005
【プログラムの流れ】例:SJISコードを取得する場合
文字列を受取る→1文字取得→System.Text.EncodingでSJIS指定のバイト型配列文字に変換(文字コードを取得)

A 回答 (1件)

WindowsはJIS2004のShift_JISに対応していません。


Windows以前からMicrosoftはShift_JISに独自に拡張をしてきましたが、その拡張とJIS2004で新しく定義された文字がバッティングしています。
JIS2004に対応しようとすれば旧来の環境を捨てるしかない状況です。
そしてMicrosoftは互換性を取ったということです。
JIS2004の拡張漢字を扱いたいのならUnicodeで扱うほかありません。
    • good
    • 0
この回答へのお礼

回答有難う御座います。
上記であれば、対象文字のコードを取得するには、文字をStringとしてではなくUnicodeで受け取り、コードに変換するということですね。
ちと処理が複雑になるってことですね。。。
ありがとうございました。

お礼日時:2008/07/11 21:37

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!