3
我有以下Visual Basic 6.0函數,它通過FTP將ANSI字符串寫入新文件。我希望它將文件編寫爲UTF-16LE。在以下方法中有沒有什麼好的方法可以做到這一點?通過FTP將ANSI字符串寫入Unicode文件
Public Sub writeToFile(ByVal FTPServer As String _
, ByVal userName As String _
, ByVal password As String _
, ByVal contents As String _
, ByVal destinationFile As String)
Dim hFile As Long
Dim lCount As Long
inetOpen
inetConnect FTPServer, userName, password
hFile = apiFtpOpenFile(m_hFTP, destinationFile, GENERIC_WRITE, FTP_TRANSFER_TYPE_BINARY, 0&)
If hFile = 0 Then
Err.Raise EWMFTPErrorCodes.wmFTPSendError, , internetError
End If
If apiInternetWriteFile(hFile, contents, Len(contents), lCount) = 0 Then
Err.Raise EWMFTPErrorCodes.wmFTPSendError, , internetError
End If
apiInternetCloseHandle hFile
End Sub
我在10年左右沒有完成Visual Basic 6.0,所以我最好搖搖晃晃。任何投入將不勝感激。
這裏是apiInternetWriteFile聲明;
Private Declare Function apiInternetWriteFile Lib "wininet.dll" Alias "InternetWriteFile" (_
ByVal hFile As Long _
, ByVal lpBuffer As String _
, ByVal dwNumberOfBytesToWrite As Long _
, ByRef lpdwNumberOfBytesWritten As Long) As Long
衛生署,我認爲完美工作,文件大小現在翻倍。但是它沒有UTF-16LE BOM(ff fe)。有關如何解決這個問題的任何建議? – cc0 2011-03-31 10:53:41
查看我的編輯,請回復,告訴我們它是否有效,我會進行相應的編輯。 – MarkJ 2011-03-31 11:26:05
LE是FFFE,你的編輯確實把BOM放在那裏,但是文本變得亂七八糟。有些東西是歪斜的。我試圖將字符串轉換爲字節數組,然後與BOM字節數組連接。然後我有建議使用ADO Stream對象,這似乎更好。雖然如果你能找到一個簡單的解決方案,我很樂意看到它。 – cc0 2011-03-31 12:00:01