投稿日 | : 2006/11/09(Thu) 23:59 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re^3: テキストから文字を取得したいのですが |
> > まず、それらの文字は、Unicode テキストファイル上では、どのようなバイナリ値になっていますか?
> 立方メートルが FF,FE,A5,33,
ん……? BOMが付いていますね。
1文字につき、1つのファイルなのですか?
> 平方メートルが FF,FE,A2,33,
> です。
それが本当なのだとしたら、元のテキスト自体が破損しています。
U+33A2 は、平方キロメートルのはずですし。
> > また、化ける件に関しては、Stream に取り込んだ際に、既に化けているのでしょうか。
> > それとも、Stream にまでは正常に取り込まれているものの、それを表示するときに
> > 化けているのでしょうか?
> そうです。Streamに取り込んだ際にすでに化けてしまっています。
それでは、その化けたバイナリ値を教えてください。
Stream にテキストを取り込んだ後、
.Position = 0
.Type = adTypeBinary
バイト配列変数 = .Read(adReadAll)
のようにすれば、バイナリを得ることができます。
> HTMLファイルにはShift-JISを採用しています。
HTML への出力なので、"Shift-JIS" ではなく、"Shift_JIS" ですね。
> 数値参照で表示を考えているのですが、
数値参照にしたい文字が少ないなら、Replaceメソッドあたりを使う事になるでしょうが、
そうした文字が多いなら、一文字ずつ数値参照に変換しながら、Print # していく、とか。
ひとつひとつ数値参照に置き換えていく以外の方法を考えるとすると……MSHTML から
DOM で出力して、それを IPersistFile::Save するとか……かな?
(文字コードを指定できるのかどうかが微妙なので、無理かも)