|
前段时间,因为项目需要,需要用Excel管理国际化资源文件的字符串,
旨在用VBA直接生成资源文件。
但是遇到一个问题,就是:
VBA生成的文本文件,默认是Gb2312编码(与系统的一致),所以我就
只能生成UTF-8格式的了。但是,用FSO生成的UTF格式是【UTF-16LE】
VS2008不识别。。。
郁闷之余,只能用MADC来生成。但是,情况又出现了,用MADC生成的UTF-8
文件默认是带BOM头的。。。
所以,逼上梁山的我就这能用下面的办法来实现UTF-8 无BOM头的写:
Private Sub WriteOut(strPath As String, str As String)
Dim objStream As Object
Set objStream = CreateObject("ADODB.Stream")
With objStream
.Type = 2 'adTypeText
.Charset = "UTF-8"
.Open
.WriteText str
.SaveToFile strPath, 2 'adSaveCreateOverWrite
End With
Set objStream = Nothing
End Sub
Public Function Convert2utf8(fileName As String, FileTo As String) As Boolean
Dim ReadIntFileNum, WriteIntFileNum As Integer
ReadIntFileNum = FreeFile() '获取一个空文件
WriteIntFileNum = FreeFile() + 1
Open fileName For Binary As ReadIntFileNum
Open FileTo For Binary As #WriteIntFileNum
' Dim byteFrom, byteTo As String
Dim fileByte As Long
Seek #ReadIntFileNum, 4
While Not EOF(ReadIntFileNum)
Get #ReadIntFileNum, , fileByte
Put #WriteIntFileNum, , fileByte
Wend
Close #ReadIntFileNum
Close #WriteIntFileNum
Kill fileName
End Function
在使用的时候,先用WriteOut生成一个临时文件(UTF-8带BOM),
然后用Convert2utf8将BOM头的前三个字节删除。 |
|