2017-06-06 4 views
0

私のIBM MQはUTF-8形式で保存されたXMLファイルを受け入れていません。私はそれがBOMフォーマットなしでUTF-8を受け入れるかどうか試してみたい。私は複数のことを試みましたが、ファイルを非BOM形式で保存できませんでした。私のコードは以下の通りです。XMLを開き、テキストを読み取り、テキストを置き換え、BOM形式のないUTF-8でファイルを書き戻します。

Dim objStreamUTF8  : Set objStreamUTF8  = CreateObject("ADODB.Stream") 
Dim objStreamUTF8NoBOM : Set objStreamUTF8NoBOM = CreateObject("ADODB.Stream") 

With objStreamUTF8 
    .Charset = "UTF-8" 
    .Mode = 3 
    .Type = 2 
    .Open 
    objStreamUTF8.LoadFromFile uxtNewRenamePath'"C:\WINDOWS\Temp\DataFiles\TC10_ Apostrophe symbol in tag Cdtr_Adrline2_Pacs8_TxID201765133641.xml" 
    objStreamUTF8.Flush 
    strFileText = objStreamUTF8.ReadText() 
    strFileText = Replace(strFileText,"&#", "&#") 
    strFileText = Replace(Replace(Replace(Replace(Replace(strFileText, "GreaterThanSymbol", ">"), "LessThanSymbol", "<"), "ApostropheSymbol", "'"), "AmpersandSymbol", "&"), "DoubleQuotesSymbol", chr(34)) 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    objFSO.DeleteFile uxtNewRenamePath, True 
    Set objFSO = Nothing 
    .Position = 0 
    .Flush 
    .WriteText strFileText 
    .SaveToFile uxtNewRenamePath, 2 
    .Close 
    .Type = 1 
    .Open 
    .Position = objStreamUTF8.Size 
End With 

With objStreamUTF8NoBOM 
    .Mode = 3 
    .Type = 1 
    .Open 
    objStreamUTF8.CopyTo objStreamUTF8NoBOM 
    .SaveToFile uxtNewRenamePath, 2 
End With 

objStreamUTF8.Close 
objStreamUTF8NoBOM.Close 

objStreamUTF8NoBOMをファイルに保存すると、ファイルが完全に空白です。私が間違っていることや、ファイルを希望の形式で保存する方法を教えてください。

答えて

1

BOM文字をスキップするには、最初のストリームの位置を3番目に設定する必要があります。

objStreamUTF8.Position = 3

関連する問題