
こんにちは。現在、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);
No.1ベストアンサー
- 回答日時:
外していると思いますが。
。。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);
No.2
- 回答日時:
> これを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を返してきているのが何か関係しているのでしょうか…?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- フリーソフト フォルダ、ファイル名の一括変換について 3 2023/03/16 09:23
- その他(データベース) Accessのクエリで1フィールドの抽出条件設定をNullでなく全角半角含む空白のみの文字列でない文 1 2023/04/24 15:20
- Excel(エクセル) capeofdragonと申します Excel2016を使っておりまして 半角又は全角の任意文字列が 2 2022/10/31 13:51
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Visual Basic(VBA) VBAでPowerPointからExcelにレイアウト通りに出力する 4 2023/07/05 12:22
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- C言語・C++・C# C言語で 英文字のみからなる文字列、”Radar”、”WasItACatISaw”、”a”、””(空 5 2022/12/20 15:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでアルファベットか数...
-
Excelオートフィルター機...
-
Python Django csv について
-
VBAでの Replace関数で、ワイル...
-
指定した文字の前の数字を取り出す
-
文字列の最後の文字を置き換え...
-
結局、HTML5でクリップボードに
-
テキストエディタで複数行にわ...
-
VBA 1つのセルに入っている値の...
-
firefoxで、特定の文字列を含む...
-
エクセル マクロ 右側のスラッ...
-
10個の文字から4文字選んででき...
-
アドレスでの参照の仕方
-
EXCELで=より左の文字を一括で...
-
エクセルで文字列の最大値を抽...
-
MessageBoxが表示されないのは何で
-
VBA2005 16進を2桁で表示したい。
-
変数内に入った文字列の結合 UWSC
-
StringGridで選択した箇所の文...
-
文字列ファイル表示プログラム
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでアルファベットか数...
-
EXCELで=より左の文字を一括で...
-
文字列からタブコードを取り除...
-
VBAでの Replace関数で、ワイル...
-
エクセルで文字列をtxtファイル...
-
【Excel VBA】複数ある特定の文...
-
エクセル 数値データを桁をそ...
-
Excelで3E8を3.00E+8にしない方...
-
VBA2005 16進を2桁で表示したい。
-
エクセルで文字列の最大値を抽...
-
同一セル内に関数と文字列を同...
-
Left関数とRight関数を合わせた...
-
Excelで指数表現しないようにす...
-
MS SQLServer のSQLで文字列の...
-
VBの「As String * 128」とは?
-
エクセルでセル内の文字列の最...
-
ORCLEでの小数の表示方法の変更...
-
bashスクリプトでの文字列から...
-
LEFT関数で文字数を指定しない...
-
アクセスで特定の数字以外(複...
おすすめ情報