- ベストアンサー
[transformNode]メソッドの使い方と日本語表示に関する解決方法
- VB6で開発中のシステムで、MSXML.DOMDocumentのXMLファイルとXSLファイルをtransformNodeメソッドでHTMLファイルに変換していますが、日本語の表示に問題があります。HTMLファイルのcharsetをShift-JISに指定することで問題を解決できることが分かりました。
- transformNodeメソッドを使用してVB6のシステムでXMLファイルとXSLファイルをHTMLファイルに変換していますが、一部の日本語が正しく表示されない問題に直面しています。解決策として、transformNodeメソッドで生成されたHTMLファイルのcharsetをShift-JISに変更することで問題を解消することができます。
- VB6で開発中のシステムでは、MSXML.DOMDocumentのtransformNodeメソッドを使用してXMLファイルとXSLファイルをHTMLファイルに変換していますが、日本語の表示に問題があります。この問題は、transformNodeメソッドで生成されたHTMLファイルのcharsetをShift-JISに変更することで解決できます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
当方で検証不能。 関係してそうなところ。 http://www.w3.org/TR/xslt#output If no encoding attribute is specified, then the XSLT processor should use either UTF-8 or UTF-16. http://www.w3.org/TR/xslt#section-HTML-Output-Method >The encoding attribute specifies the preferred encoding to be used. If there is a HEAD element, then the html output method should add a META element immediately after the start-tag of the HEAD element specifying the character encoding actually used. 以上より 一応俺はXSLTファイルの方を弄って見る。 残念ながら >日本語がきちんと表示されるときとされない の境界条件が何かわからない。 本来なら常に化けないのが正しいと思うけどな #Shift-JISじゃなくてShift_JIS 間違えるとUTF-8だかUTF-16だかとして読み込まれるとかエラーになるとか そういう感じになると思うので注意。 http://www.iana.org/assignments/character-sets もし境界条件わかったら 補足なりお礼なりで教えてくれるとうれしい。
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
お礼
himajin100000 様 アドバイスありがとうございます。 早速 >http://www.tek-tips.com/viewthread.cfm?qid=1379722&page=10 へ、行って見ました。 ここで質問されている内容は、言語が"javascript"で、変換したい文字コードが"UTF-8"であることを除いてほぼ同じです。 質問者もアドバイス通りやっていたら成功している様子です。 なのでJAVAスクリプトをVBの構文に置き換え下記のようにコーディングしてみました。 Dim objXml As Object Dim objXsl As Object Dim objOut As Object Dim strHtml As String GF_booSetToExcelWorkSheet = False On Error GoTo ERR_PROC Set objXml = CreateObject("MSXML.DOMDocument") objXml.async = False objXml.Load a_strXmlFile & "\" & FILENAME_CABLEMANAGE & ".xml" Set objXsl = CreateObject("MSXML.DOMDocument") objXsl.async = False objXsl.Load a_strXmlFile & "\" & FILENAME_CABLEMANAGE & ".xsl" Set objOut = CreateObject("MSXML.DOMDocument") objOut.async = False objXml.transformNodeToObject objXsl, objOut strHtml = objOut.XML ERR_PROC: ところが、"objXml.transformNodeToObject objXsl, objOut" の、ところでエラーになり"ERR_PROC"に飛んでしまいます。 ますますわからなくなりました。 ちなみに"msxml6.dll"を参照しています。
補足
自分が作成しているスタイルシートに <xsl:output method='xml' version='1.0' encoding='UTF-8' indent='yes' /> の、行が無かったので追加して試したところ"transformNodeToObject"でのエラーは無くなったが、Excelで開いたときに、<Title>タグが認識されない内容のエラーが出て開けなくなりました。 でも、これは当然なのかもしれないです。 スタイルシートで出力形式にXMLを指定しているし"strHtml=objOut.XML"で、XMLファイルを出力するようにしているし... で、スタイルシートでの出力形式に"html"って指定したらHTMLファイルが出力されるんじゃないかな?と思っていやってみたところ、ブラウザでは普通に開けたが、"transformNodeToObject"で「認識されない文字が有る」と言ってエラーになりました。 なんか八方ふさがりな感じです。
お礼
himajin100000様 アドバイスありがとうございました。 取り急ぎ"Shift-JIS"を"Shift_JIS"変更して検証してみましたが 状況は変わりませんでした。 引き続き悩んでみます。