2017-06-18 9 views
0

私はデコードされたBase64文字列からXMLファイルを作成するには、以下のコードを使用しています:xmlファイルからジャンク文字(おそらくBOM)を削除 - VBA

'More Code Above 
btArr = MyFoundString 

Set DM = CreateObject("Microsoft.XMLDOM") 
Set EL = DM.createElement("tmp") 
EL.DataType = "bin.base64" 

EL.Text = CStr(btArr) 
decodeBase64 = EL.nodeTypedValue 

XMLFileName = FLDR_NAME & XMLFileNameF 


Open XMLFileName For Binary Access Write As #1 
Put #1, 1, decodeBase64 
Close #1 

ファイルを12ジャンクを除き、正しく書き込まれますこれ使えなくxmlファイルをレンダリングする、ファイルの先頭に表示される文字:

Junk Characters

たびに、それは別の12の文字ですが、各作成されたファイルは、それらを持っている:(

調査の結果、これはフォーマットエンコード関連であり、これらの文字がバイトオーダーマーク(BOM)を構成する可能性があることを理解しています。

これらの文字を削除するにはどうすればよいですか?

ヘルプは高く評価されています。

+0

@ YowE3Kありがとうございます。しかし、このケースでは 'decodeBase64'はファイルに書き込まれるByte文字列であり、文字を省略できるテキスト文字列ではないため実際には機能しません。 – CaptainABC

+0

FWIW - 私はbase64エンコーディングを読み込み、 'btArr = MyFoundString'を' btArr = "QUJD" 'に置き換えてコードを実行したところ、' ABC "という3文字を正しく書きました)。これは、出力ファイルに12文字を生成する 'MyFoundString'の先頭に8文字あることを意味しています。 – YowE3K

+0

私は最後のコメントを読んだだけですが、12文字を生成する16文字を読みます。 (タイプ情報またはサイズ情報の2×8バイトワード、または1×16バイトワードの可能性があります) – YowE3K

答えて

0

私はそれを理解しました。ファイルが書かれているのは確かです。このすべてのファイルがどのなしの代わりにバイナリアクセス書き込みのADODBストリーム方式を使用して、正しく書き込まれた後

Set BinaryStream = CreateObject("ADODB.Stream") 

BinaryStream.Type = 1 

BinaryStream.Open 
BinaryStream.Write decodeBase64 
BinaryStream.SaveToFile XMLFileName, 2 

Open XMLFileName For Binary Access Write As #1 
Put #1, 1, decodeBase64 
Close #1 

へ:

ソリューションは、以下の部分を変更することでしたジャンク文字。

関連する問題