プロが教えるわが家の防犯対策術!

いつもお世話になっております。
前回、機種依存文字の変換について質問させて頂いた者です。
㈱⇒(株)
等の&#number;型の文字コードの変換はchrw関数を用いる事で
無事に変換することが出来ました。

また新たに文字コードの変換について教えていただきたいのですが、
&⇒&
などの&keyword;型の変換をするような関数など無いでしょうか?
関数だけでなく、こうすれば?っていうのもあれば教えて頂けると
幸いです。

以上です。よろしくお願い致します。

A 回答 (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("<㈱&>")
    • good
    • 0

あまり「特殊文字コード」とかいう名称好きじゃないんだよなー。


=============================
さておき、書くのが面倒なので概略だけ説明する。
'参照設定で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なので,定義されている文字実体参照は限られている。(や¢は定義されていません)
'一応サンプルとして¢を定義してみた。
'実際には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
    • good
    • 0

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