アプリ版:「スタンプのみでお礼する」機能のリリースについて

VB6で開発中のシステムで、"MSXML.DOMDocument"のXMLファイルとXSLファイルをtransformNodeメソッドでHTMLファイルを生成して、エクセル2003で開いています。
データの内容によるのですが、日本語がきちんと表示されるときとされないときがあります。
transformNodeメソッドで作成されたHTMLファイルの中身を見てみると
  <META http-equiv="Content-Type" content="text/html; charset=UTF-16">
の行で[charset=UTF-16]を[charset=Shift-JIS]に変更するとどちらも問題なく表示されることが分かりました。
HTMLファイルを生成する際に[charset=UTF-16]の部分を[charset=Shift-JIS]に指定する方法は無いでしょうか?

よろしくお願いします。

A 回答 (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-Me …

>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

もし境界条件わかったら
補足なりお礼なりで教えてくれるとうれしい。
    • good
    • 0
この回答へのお礼

himajin100000様
アドバイスありがとうございました。
取り急ぎ"Shift-JIS"を"Shift_JIS"変更して検証してみましたが
状況は変わりませんでした。

引き続き悩んでみます。

お礼日時:2007/12/07 19:48

この回答への補足

自分が作成しているスタイルシートに
<xsl:output method='xml' version='1.0' encoding='UTF-8' indent='yes' />
の、行が無かったので追加して試したところ"transformNodeToObject"でのエラーは無くなったが、Excelで開いたときに、<Title>タグが認識されない内容のエラーが出て開けなくなりました。

でも、これは当然なのかもしれないです。
スタイルシートで出力形式にXMLを指定しているし"strHtml=objOut.XML"で、XMLファイルを出力するようにしているし...
で、スタイルシートでの出力形式に"html"って指定したらHTMLファイルが出力されるんじゃないかな?と思っていやってみたところ、ブラウザでは普通に開けたが、"transformNodeToObject"で「認識されない文字が有る」と言ってエラーになりました。

なんか八方ふさがりな感じです。

補足日時:2007/12/10 13:42
    • good
    • 0
この回答へのお礼

himajin100000 様
アドバイスありがとうございます。
早速
http://www.tek-tips.com/viewthread.cfm?qid=13797 …
へ、行って見ました。
ここで質問されている内容は、言語が"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"を参照しています。

お礼日時:2007/12/10 09:49

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