• 締切済み

外字の除去方法

WindowsXP(SP2) VisualBasic6.0(SP6) を使って開発をしています。 現在、文字列から外字を除去するプログラムを作っています。 S-JIS(F040~F9FC)にあたる外字を除去する方法は分かったのですが、Unicode(E000~F8FF)にあたる外字を除去する方法が分からず困っています。 ご存知の方がいましたら教えてください。 宜しくお願いします。 (追伸) ↓↓S-JIS外字を除去する場合------------------------------------- Public Function DeleteGaiji(strText As String) As String Dim Reg As New RegExp Reg.Pattern = "[" & Chr(&HF040) & "-" & Chr(&HF9FC) & "]" Reg.Global = True DeleteGaiji = Reg.Replace(strText, "") End Function 上記の方法でS-JIS外字を除去しようと思っています。 Unicodeの場合は、 Reg.Pattern = "[" & Chr(&HE000) & "-" & Chr(&HF8FF) & "]" とすれば良いのでしょうか? 別の表現方法があるのかなと思って、悩んでいます。

  • bou7
  • お礼率69% (51/73)

みんなの回答

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.1

VB6でどんなルーチンを使うかかかれていないので仕様が不明なのですが (VBScript Engineのものでしょうか?) Reg.Pattern = "[\uE000-\uF8FF]" でどうでしょうか?

bou7
質問者

お礼

回答、ありがとうございます。 >Reg.Pattern = "[\uE000-\uF8FF]" では駄目でした。 しかし、 Reg.Pattern = "[" & ChrW(&HE000) & "-" & ChrW(&HF8FF) & "]" とすることで、無事に外字を除去出来ました。

関連するQ&A

  • アクセス2000でイベントプロシージャで外字の抽出

    クエリーで Like "*[" & Chr(&hf040) & "-" & Chr(&hf9fc) & "]*" できますが イベントプロシージャのなかで instr()関数で使えないでしょうか 単純に上の記述をまねして氏名フィールドのなかに外字があるかどうか instr([simei],"[" & Chr(&hf040) & "-" & Chr(&hf9fc) & "]") >0 うまくいきません。 記述がまちがっているのでしょうか それとも外字の文字コード1文字づつLOOPさせないといけないのでしょうか

  • JavaのStringクラスに「外字」という概念はある?

     今、客先のデータをJavaで処理しようとしているのですが、そのデータ(Shift-JISの文字列データ)には、今まで使われてきた「外字」が含まれています。  私の知っている範囲では、Shift-JISの文字列でも、Javaで読み込んだら内部的にUnicodeに変換されるのではないかと思っているのですが(←間違っているかもしれません)、そのUnicode変換の際に外字の部分はどうなってしまうのでしょうか。また、Unicodeに変換された文字列を、出力の際にまたShift-JISに戻すことになると思うのですが、そのときにはちゃんと以前の外字コードに戻ってくれることが保証されているのでしょうか。  JavaのリファレンスでStringクラスのページで「外字」という文字列で検索してみたのですが、まったくひっかからなかったので不安になっています。  よろしくお願い致します。

    • ベストアンサー
    • Java
  • unicodeにしかない漢字をSJISの外字に簡単登録

     Windows OS上には、Shift-JISにないunicode文字が たくさんありますが、shift-JISで漢字を処理している プログラムでは、プログラムをunicode対応に変更する 方法もありますが、変更をしないとすれば、Shift-JIS上の 外字を作成し、コードを対応付けして変換するようにするしかありません。(あまり頻度は多くはないので) ただ外字エディタで外字を作るのはかなり面倒な作業です。 unicode上の漢字イメージ情報を元にShift-JISの外字へ登録するようなツールはないでしょうか? あれば、外字対応が非常に楽になるのです。 ご存じの方があれば教えて下さい。  

  • 外字の登録

    会社で使用する外字の登録をシフトJISコードF140~F4FFに登録しているのですが、MSゴシックとMS明朝のみ外字がうまく表示されません。(他のフォントでは表示されます。)まったく表示できないというわけでなく、シフトJISコードF140のところに外字を登録しているはずなのに、違う文字が表示されてしまいます。(F140だけでなく、ところどころ登録している外字と違う文字になってしまいます。) なにか違うフォントが邪魔しているのでしょうか? ちなみに外字の登録は、外字エディタからビットマップフォントの取り込み→古い外字フォントの取り込み→USERFONT.FON→OKでやっています。 もし対処法がわかる方がいらっしゃいましたら教えてください。よろしくお願いします。 ちなみにノートパソコン(FUJITU)で、OSはXPProです。

  • 外字

    外字エディタで作成した文字の呼び出し方法がわからない。 Windows10でその作成した文字をExcelやWordに呼び出したい。 Windows95では外字エディタで作成した文字は、f10押下からJISコードより登録したコードからの選択して、呼び出せました。 window10での方法を教えてください。

  • Excel Xp で外字が使えない?

    外字を作成したのですが、EXCEL/XPだと、文字(シフトJIS)コードで F140 から以降が ハングル文字のような文字が出てきています。 F040からF0FCまでは使用できています。 EXCELでも2000ではキチンと表示されますし、XPでもwordでは正常に使用できます。  EXCEL/XPの特有の機能追加の所為だと思うのですが、外し方が分りません。   よろしくお願いいたします。

  • 外字を変換したい

    Windows2000(sp3) VisualBasic(sp5) で開発中です。 いま、 『文字列の中に外字(F040~F9FC)が含まれていないかチェックし、含まれていたら、特定の文字に変換する。』 と言うことをしたいのですが、この場合、文字列を16進に変換し、その上で、F040~F9FCが含まれていないかチェックすると言う方法しか思い浮かびません。 もっとスマートで、処理時間が少ない方法等ありましたら教えてください。 よろしくお願いします。

  • エクセル VBA

    初歩的なことですいません。 自分で作った外字をVBAで扱いたいのですが、 どうすればよいのでしょうか。 Chr()の中に数字を入れればいいのでしょうか。 そうとしても、どんな数字を入れればよいのでしょうか。 たとえば、シフトJISで f040 の文字を作ったとします。 それをVBAで呼び出す方法をどなたか教えてください。 よろしくお願いしまーーーす。

  • EXCEL2002で外字がハングル文字に

    EXCEL2002である文字コード範囲の外字を表示させるとハングル文字に 化けてしまいます。 Word2002をはじめ、IME、外字エディタなど他のアプリでは正常に表示されます。 環境は マシン   NEC VersaPro  OS    Windows98se EXCEL マシンバンドルのEXCEL2002 IME   MS-IMEスタンダード2002 問題のコード範囲は、S-JISで「f140」から「f9fc」までです。 なお、業務アプリの制限でOSのアップグレードは不可です。 EXCELのバージョンを落とすしかないのでしょうか。 特に2002でないといけない理由はないのですが、今更2000のライセンスを買うのもしゃくにさわります。 対処法など、なにか情報をお持ちの方、よろしくお願いしますm(_ _)m

  • Cで作成したDLL関数をVBから呼ぶ(.NET)

    以前の質問に「Cで作成したDLL関数をVBから呼ぶ」(QNo.1703839)がありますが、下記のコードを見るとVB6での内容だと思います。 Dim keydata As String * 128 keydata = String$(128, Chr(0) & Chr(0)) VB.NETでVC++のDLLで変更した文字列を受けたいのですが、 どのようにすればよいのでしょうか? VB.NET2003 <DllImport("DllTest.dll")> Private Shared Function _ Test(ByVal s1 As String) As String End Function Private Sub btnTest_Click(...) ... Dim s1 As String = "abc" Dim s2 As String Dim s3 As String s2 = Test(s1) MessageBox.Show(s2) ' "1"が表示される s3 = StrConv(s2, VbStrConv.None) MessageBox.Show(s3) ' 同じく"1"が表示 end sub VC++のDLL extern "C" __declspec (dllexport) BSTR __stdcall Test(char* s1) { AfxMessageBox(s1); // "abc"が表示される OK strcpy(s1, "123"); CString s2; s2 = "123"; return s2.AllocSysString(); } また、文字列に全角を含めても大丈夫でしょうか? Unicodeの変換処理を行う必要があるのでしょうか? よろしくお願いします。

専門家に質問してみよう