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

こんにちは。現在、XMLファイルをC++で変換し、HTMLファイルを生成するプログラムを作成しています。(2)のソースから(1)の関数を呼んで文字列の変換を行った後、テキスト要素の作成、追加を行っていますが、「全角文字列」という文字列が「蜈ィ隗呈枚蟄怜・」と出力されてしまいます。解決方法についてご教示願います。


(1)BSTR AsciiToBSTR(const char* ascstr)
 {
 WCHAR wszURL[MAX_PATH];
 ::MultiByteToWideChar(CP_ACP, 0, ascstr, -1, wszURL, MAX_PATH);
 return SysAllocString(wszURL);
 }

(2)
 IXMLDOMDocument* pHTMLDoc
 IXMLDOMNode * pNewNode;
 BSTR bstrText;

 bstrText = AsciiToBSTR("全角文字列");
 pDoc->createTextNode(bstrText, &pNewNode);

 pHTMLDoc->appendChild(pNewNode, NULL);

A 回答 (2件)

外していると思いますが。

。。HTMLのブラウザの文字設定をUnicodeにしても化けますか?

この回答への補足

ありがとうございます!Unicodeで表示してみると、意図した文字列が表示されました。
SHIFT-JISで出力させていたつもりが、Unicodeで出力されていたということが分かりました。
今Unicodeで出力されているようですが、これをSHIFT-JISで出力させたいのですが、いかがでしょうか?ちなみにオブジェクト作成箇所は(1)、ファイル出力箇所は(2)のようなソースになっています。

(1)
IXMLDOMDocument* pHTMLDoc=NULL;
CoCreateInstance(CLSID_DOMDocument,
NULL,
CLSCTX_INPROC_SERVER,
IID_IXMLDOMDocument,
(void**)&pHTMLDoc);
(2)
VARIANT vName;
vName.vt = VT_BSTR;
V_BSTR(&vName) = pBFilePath;//pBFilePathは出力ファイルパス
return pHTMLDoc->save(vName);

補足日時:2004/10/27 18:06
    • good
    • 0

> これをSHIFT-JISで出力させたいのですが、いかがでしょうか?


pHTMLDoc構築時に、
VARIANT_BOOL bSuccessful;
pHTMLDoc->loadXML(L"<?xml version=\"1.0\" encoding=\"Shift_JIS\"?><html/>", &bSuccessful>

という感じでShift_JISのXMLをロードするというのは如何でしょうか。

この回答への補足

ご回答ありがとうございます。
<HTML>要素は後から追加するようにしているので、頂いたソースの「<html/>」だけ削除してオブジェクト生成直後に記述したところ、出力される文字列に特に変化は見られませんでした。bSuccessfulが-1を返してきているのが何か関係しているのでしょうか…?

補足日時:2004/10/29 11:37
    • good
    • 0

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