에 대한 당신은 인코딩을 변환 할 수는 Win32 API 함수를 사용할 수 있습니다.
Private Declare Function WideCharToMultiByte Lib "kernel32.dll" (_
ByVal CodePage As Long, _
ByVal dwFlags As Long, _
ByVal lpWideCharStr As Long, _
ByVal cchWideChar As Long, _
ByVal lpMultiByteStr As Long, _
ByVal cbMultiByte As Long, _
ByVal lpDefaultChar As Long, _
ByVal lpUsedDefaultChar As Long) As Long
Private Declare Function MultiByteToWideChar Lib "kernel32.dll" (_
ByVal CodePage As Long, _
ByVal dwFlags As Long, _
ByVal lpMultiByteStr As Long, _
ByVal cbMultiByte As Long, _
ByVal lpWideCharStr As Long, _
ByVal cchWideChar As Long) As Long
Private Const CP_UTF16 As Long = 1200&
Private Function ConvertToUTF16(ByRef Source As String) As Byte()
Dim Length As Long
Dim Pointer As Long
Dim Size As Long
Dim Buffer() As Byte
Length = Len(Source)
Pointer = StrPtr(Source)
Size = WideCharToMultiByte(CP_UTF16, 0, Pointer, Length, 0, 0, 0, 0)
ReDim Buffer(0 To Size - 1)
WideCharToMultiByte CP_UTF16, 0, Pointer, Length, VarPtr(Buffer(0)), _
Size, 0, 0
ConvertToUTF16 = Buffer
End Function
Private Function ConvertFromUTF16(ByRef Source() As Byte) As String
Dim Size As Long
Dim Pointer As Long
Dim Length As Long
Dim Buffer As String
Size = UBound(Source) - LBound(Source) + 1
Pointer = VarPtr(Source(LBound(Source)))
Length = MultiByteToWideChar(CP_UTF16, 0, Pointer, Size, 0, 0)
Buffer = Space$(Length)
MultiByteToWideChar CP_UTF16, 0, Pointer, Size, StrPtr(Buffer), Length
ConvertFromUTF16 = Buffer
End Function
Private Const CP_UTF16 As Long = 1200&
은 UTF-16이다 andian 작은 코드 페이지 1,200 의미한다.
당신은 여기에 모든 코드 페이지의 목록 응답에 대한 https://msdn.microsoft.com/de-de/library/windows/desktop/dd317756(v=vs.85).aspx
감사를 볼 수 있습니다. 나는 당신의 코드 블록을 모듈로 추가하고 그 코드가 채워진 후 EntireFile로 내 코드 내부에서 CovertToUTF16 (공개했다) 함수를 호출하려고 시도했다. WideCharToMultiByte는 나에게 인덱스를 벗어난다. 나는 이것이 내포 된 함수이기 때문에 내 마지막에 오류가 있다고 확신하지만 어디에서 단서가 없다. – celphy
나는 전체 코드를 다시 살펴 봤는데 Len (Source)이 3000을 반환하지 않으면 가져온 함수가 의도 한대로 올바르게 수행된다는 것을 알았습니다 (분명히 잘못되었습니다). – celphy