1
我從一個控制檯應用程序(CMD)像這樣讀取輸入緩衝區:OEMToCharW返回錯誤的字符
var
pBuffer : array [0..2400] of Widechar;
dBuffer : array [0..2400] of WideChar;
CReadBuffer : Cardinal;
BytesRead : Cardinal;
begin
// ....
ReadFile(BuffHandle, pBuffer[0], CReadBuffer, BytesRead, nil);
pBuffer[BytesRead] := #0; // Finish/End the WideString
OemToCharW(pBuffer, dBuffer);
MessageBoxW (0, dBuffer, '', 0);
// ....
end;
出於某種原因,我得到奇怪的字符... CMD應有的OEM字符集。我之前使用過OEMtoCharA,它工作正常。 我做錯了什麼?
感謝您的幫助。
編輯: 我使用了Delphi7
好想法!唯一的問題是oemtocharW在第一個參數中需要一個widechar數組。 :/ –
有趣的是,'OemToCharW'被聲明爲函數OemToCharW(lpszSrc:PWideChar; lpszDst:PWideChar):BOOL; stdcall;'在D2007中,但作爲函數OemToCharW(lpszSrc:PAnsiChar; lpszDst:PWideChar):BOOL; stdcall;'在XE2中。所以D2007似乎是錯的。 –
我忘了說我使用Delphi7。但這怎麼可能。 WindowsAPI應該是一樣的...我用UTF-8試過了,但沒有運氣。 –