Public Function UTF8FromUTF16(ByRef abytUTF16() As Byte) As Byte()
Dim lngByteNum As Long
Dim abytUTF8() As Byte
Dim lngCharCount As Long
On Error GoTo ConversionErr
lngCharCount = (UBound(abytUTF16) + 1) \ 2
lngByteNum = WideCharToMultiByteArray(CP_UTF8, 0, abytUTF16(0), _
lngCharCount, 0, 0, 0, 0)
If lngByteNum > 0 Then
ReDim abytUTF8(lngByteNum - 1)
lngByteNum = WideCharToMultiByteArray(CP_UTF8, 0, abytUTF16(0), _
lngCharCount, abytUTF8(0), lngByteNum, 0, 0)
UTF8FromUTF16 = abytUTF8
End If
Exit Function
ConversionErr:
MsgBox " Conversion failed "
End Function
var
abytUTF8 : array of Byte; // Global
function UTF8FromUTF16(sUTF16 : WideString) : pAnsiChar;
var
lngByteNum : integer;
lngCharCount : integer;
begin
// On Error GoTo ConversionErr
result := nil;
lngCharCount := Length(sUTF16);
lngByteNum := WideCharToMultiByte(CP_UTF8, 0, @sUTF16[1],
lngCharCount, nil, 0, nil, nil);
If lngByteNum > 0 Then
begin
SetLength(abytUTF8, lngByteNum+1);
abytUTF8[lngByteNum] := 0;
lngByteNum := WideCharToMultiByte(CP_UTF8, 0, @sUTF16[1],
lngCharCount, @abytUTF8[0], lngByteNum, nil, nil);
result := pAnsiChar(@abytUTF8[0]);
End;
End;
类似:http://stackoverflow.com/questions/259836/what-is-the-best-way-to-convert-tbytes-utf-16-to-a-string – Harriv
虽然我同情你的困境,你至少应该**尝试解释你的问题。以目前的形式,这个问题对其他任何人都没有用,而且期望其他人阅读它并试图猜测你的问题是什么太多了。 (并且试图用英语表达自己,你会提高你的英语技能......如果你将来会在这里提问,你需要做的事情。) –