たとえば、AnsiChar "A" があり、それを widechar に変換したいと思います (型キャストせずに!)。いくつかのメモリ操作について考えていましたが、WideChar (メモリ内) で AnsiChar がどのように見えるかわかりません。もしかしたら、WinAPI コマンドもあるのですか?
質問する
3978 次
2 に答える
8
この変換を実行するために、Windows API 関数 MultiByteToWideChar が提供されています。当然、入力データのコードページを指定する必要があります。例えば:
function AnsiCharToWideChar(ac: AnsiChar; CodePage: UINT): WideChar;
begin
if MultiByteToWideChar(CodePage, 0, @ac, 1, @Result, 1) <> 1 then
RaiseLastOSError;
end;
ANSI コード ページで定義されているすべての文字は、Basic Multilingual Plane の Unicode 文字にマップされるため、単一の UTF-16 文字で表されることに注意してください。したがって、上記のコードのサイズの仮定。
ただし、あなたが作成していて、この答えが持続するという前提は、1 バイトが ANSI 文字セットの文字を表すということです。これは、1252 のような 1 バイトの西洋文字セットなど、多くの文字セットにとって有効な仮定です。しかし、2 バイト文字セットである 932 (日本語)、949 (Koren) などの文字セットがあります。あなたの全体的なアプローチと上記のコードは、それらのコードページに当てはまります。
于 2013-06-30T07:53:53.267 に答える