2014-09-05 44 views
3
Dim txtFile, fileObj, streamObj, s 

Set txtFile = CreateObject(fileName) 

Set streamObj = CreatreObject("adodb.Stream") 
streamObj.Charset = "UTF-8" 
streamObj.open 
Set fileObj = txtFile.OpenTextFile("filePath") 

Do Until fileObj.AtEndOfStream 
     s = fileObj.ReadLine 
     txtObj.WriteText s 
Loop 

txtObj.SaveToFile "D:\A4\Message_tool\surya.msg", 2 
fileObj.Close 

執行這個代碼後surya.msg的編碼格式是「ANSCII」,但我希望它是「UTF-8」如何文本文件的編碼格式從Unicode更改爲UTF-8

回答

2
Const adTypeText = 2 
Const adSaveCreateOverWrite = 2 

Dim inputFile, outputFile 
    inputFile = "input_file.txt" 
    outputFile = "output_file.txt" 

Dim inputStream 
    Set inputStream = WScript.CreateObject("adodb.stream") 
    With inputStream 
     .Type = adTypeText 
     .Charset = "unicode" 
     .Open 
     .LoadFromFile inputFile 
    End With 

Dim outputStream 
    Set outputStream = WScript.CreateObject("adodb.stream") 
    With outputStream 
     .Type = adTypeText 
     .Charset = "utf-8" 
     .Open 
     .WriteText inputStream.ReadText 
     .SaveToFile outputFile, adSaveCreateOverWrite 
    End With 

    inputStream.Close 
    outputStream.Close 
+0

thaks烏拉圭回合回覆它的工作原理:)您的文章 – surya4969 2014-09-05 12:36:50

0

可以使用FileSystemObject類的OpenTextFile()方法以通常方式打開Unicode編碼的文本文件。只需通過True/-1獲得第四個(「格式」)參數。

strText = objFSO.OpenTextFile(inputFile, , , True).ReadAll() 

要將您的文本編碼爲UTF-8,您需要使用ADO Stream類。

Const adTypeText = 2 
Const adSaveCreateOverWrite = 2 

With CreateObject("ADODB.Stream") 
    .Type = adTypeText 
    .Charset = "utf-8" 
    .Open 
    .WriteText strText 
    .SaveToFile "D:\A4\Message_tool\surya.msg", adSaveCreateOverWrite 
End With 

Windows支持的字符編碼的列表,看看下面的註冊表項中:

HKEY_CLASSES_ROOT\MIME\Database\Charset 
+0

其工作:)感謝 – surya4969 2014-09-05 12:50:09

+0

第四.OpenTextFile方法的/格式參數需要一個TriState,而不是一個布爾值。 – 2014-09-05 18:09:33

+0

@ Ekkehard.Horner是的。但是你可以使用'True'作爲Unicode或者'False'作爲ASCII來達到同樣的效果。 – Bond 2014-09-05 18:21:53

相關問題