- ベストアンサー
コード変換について
はじめまして VB初心者です。 以下のような処理を行いたいのですがご教授願います。 項目A(漢字10文字)があります。 項目Aの中には外字で作成した漢字が埋もれています。 項目Aを参照し、そこにある外字コードを判断し 別の外字コードに変換したい。 ロジック的には1文字(2バイト)を読み込み 外字をバイナリ判定して別のコードに置き換えする 処理をしたい。 当方vb6.0ですが 定義の方法、ロジックなど教えていただければ幸いです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
ASCはShiftJIS コードですが、UNICODEで取得したいのならASCWです。 出力する場合も同様にCHRかCHRWとなります。16進数を使いたいならHEX関数で変換するか、「&hF040」と置き換えれば問題ありません。 単純に下記のようなコードになります。 IF ASCW(x)=-8032 then Msgbox(ChrW(-8031)) End IF あるいは If Asc(x) = &HF040 Then MsgBox (Chr(&HF041)) End If ただそれ以前の問題として。 これってF040に登録されている文字を表示する、あるいは「A」という文字がF040に登録されているという情報を得ているだけのことですよ? あるPC「A」の文字コード"0001"に「あ」という文字が登録されているとしますよね。でもPC「B」の文字コード"0001"は「い」だったりするわけですよ。外字の文字コードに何が入っているかはその機種固有のものなので、F040をF041に変換したところで、どう動作するかはそのPCに登録されている文字次第の話なんですがそれでもよいのでしょうか?
その他の回答 (1)
- popesyu
- ベストアンサー率36% (1782/4883)
バイナリ判定ってのがどんな処理を期待しているのがいまいち分からないのですが、一文字ずつASC関数で文字コードを取得して、if関数でそれが判別しながら、出力も同様に文字コードきめ打ちで出すしかないのではと思いますが。 で当然ですが外字何で、そのPCでしか動きません。
お礼
お返事ありがとうございます。 実は複数のPCで独自に作成した外字を、共通にするため 外字コードの変換をしたいのです。 外字エディタで作成したものをテキストに貼り付け バイナリ(MIFES)でバイナリ表示をすると 16進でF040と表示されます。 これをVBでASC関数で参照しますとF040ではなく 別のコードで表示されます。詳しくはないですが UNICODEかと思います。 VBではUNICODEしか使用できないとか あったように記憶していますが、とにかく F040をF041などに変換したいのです。
お礼
お返事ありがとうございます。 回答の内容で何とかなりそうです。 今回やりたいのは仕事の関係で、各クライアントに 独自の外字が登録されているのを全て集めて 新たに共通の外字ファイルを作成し、各クライアントに 戻す作業をします。 その後、各クライアントの氏名マスタに使用されていた 外字を新旧変換コード表に基づき新たな外字に変換するという内容です。 少々複雑ですがこんなことをやりたかったため質問しました。 アドバイスの内容で試してみます。 ありがとうござ生ました。