Informacje o konwersji z użyciem Unikodu w środowisku Windows

Poniższy kod paskalowy pokazuje jak przekonwertować tekst z jednego standardu stronicowanego na inny przechodząc przez Unikod. Wykorzystuje funkcje dostępne w Windows9x/nt/2000 a te z kolei wbudowane w system nls'y. Numery standardu wejściowego i wyjściowego można znaleźć w dokumentacji lub w rejestrze systemowym. Oprócz "binarnych" kodowań w środowisku Windows nt/2000 można podać numery odpowiadające kodowaniu utf. Drogą prostych modyfikacji można uzyskać konwerter do lub z Unikodu, konwertować pojedyncze kody w innych, specjalizowanych konwerterach.


function Przekonwertowany( const ACiag:String;
const AStandWe,AStandWy:Integer):String;
var TymczUnikod:WideString;
Rozmiar:Integer;
begin

// ze zródłowego do unikodu
Rozmiar:=MultiByteToWideChar(AStandWe,0,Pointer(ACiag),Length(ACiag),Pointer(TymczUnikod),0);
SetLength(TymczUnikod,Rozmiar);
MultiByteToWideChar(AStandWe,0,Pointer(ACiag),Length(ACiag),Pointer(TymczUnikod),Rozmiar);

// z unikodu do docelowego
Rozmiar:=WideCharToMultiByte(AStandWy,0,Pointer(TymczUnikod),Length(TymczUnikod),Pointer(Result),0,nil,nil);
SetLength(Result,Rozmiar);
WideCharToMultiByte(AStandWy,0,Pointer(TymczUnikod),Length(TymczUnikod),Pointer(Result),Rozmiar,nil,nil);

end;

W magazynie źródeł znajdują się inne procedury związane z użyciem Unikodu do konwersji


Więcej informacji o samym Unikodzie można znaleźć na stronie poświęconej temu standardowi.


Wszelkie prawa zastrzeżone © Piotr Trzcionkowski 1999-2005