• ベストアンサー

VB6.0 特殊文字コードの変換

いつもお世話になっております。 前回、機種依存文字の変換について質問させて頂いた者です。 ㈱⇒(株) 等の&#number;型の文字コードの変換はchrw関数を用いる事で 無事に変換することが出来ました。 また新たに文字コードの変換について教えていただきたいのですが、 &⇒& などの&keyword;型の変換をするような関数など無いでしょうか? 関数だけでなく、こうすれば?っていうのもあれば教えて頂けると 幸いです。 以上です。よろしくお願い致します。

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

  • ベストアンサー
  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

(1)参照設定で、"Microsoft HTML Object Library"をチェックする。 (2)以下のプログラムでデコード Function Decode(ByVal Text) As String Dim Doc As HTMLDocument Set Doc = New HTMLDocument Doc.body.innerHTML = Text Decode = Doc.body.innerText End Function (3)テストコード  MsgBox Decode("<㈱&>")

その他の回答 (1)

回答No.1

あまり「特殊文字コード」とかいう名称好きじゃないんだよなー。 ============================= さておき、書くのが面倒なので概略だけ説明する。 '参照設定でMicrosoft XML,v6.0を追加しておく 'その関係で,実行環境にもコレが '幅広い環境に対応するために遅延バインディングしたい?嫌だ。 Option Explicit Sub Main() '何故か俺の環境ではMSXML2.DOMDocument60ではうまくいかなかった。 Dim xml As MSXML2.DOMDocument30 Dim inputStr As String Dim outputStr As String 'well-formedな場合にしか有効にならないので '一気に渡さない方がいいかも(well-formedであると断言できる範囲まで) 'HTMLが嫌いで,使っているのがXMLなので,定義されている文字実体参照は限られている。(&nbsp;や&cent;は定義されていません) '一応サンプルとして&cent;を定義してみた。 '実際にはentファイルを読み込むようなコードを書く事になるだろうが,文字列リテラルが長くなって見づらかったので回答では断念。(できるかどうか未検証) inputStr = "<!DOCTYPE x [<!ENTITY cent ""&#x00A2;""><!ELEMENT x (#PCDATA)> ]><x>㈱&#x3042;&amp;&amp;&cent;</x>" Set xml = New MSXML2.DOMDocument30 xml.validateOnParse = True xml.resolveExternals = True xml.loadXML (inputStr) MsgBox (xml.Text) End Sub