Delphi에서 big5 변환 Unicode 함수

1886 단어 unicode
function Big5ToUnicode(str  Char): widestring;

var

  len: integer;

begin

  len:=MultiByteToWideChar(950,0,PChar(str),-1,nil,0);

  setlength(result,len-1);

  MultiByteToWideChar(950, 0, PChar(str), -1, pwidechar(result), len+1);

  result:=' '+result;

end;

 
MultiByteToWideChar(950, 0, PChar(str), -1, pwidechar(result), len+1) 매개 변수의 의미:
950: 부호, 950 즉 Big5와 Unicode의 대응 표;0: 이 분은 0을 쓰면 됩니다.PChar(str): 문자열의 주소(여기 PChar로 한 번 강제로 변환했으니 필요 없을 것 같음); -1: 문자열 길이, -1이면 자동으로 길이를 계산하여 문자열 끝으로 변환합니다.pwidechar(result): 결과를 저장하는 주소;len+1: 버퍼 크기, 0 함수이면 필요한 버퍼 크기를 되돌려줍니다.
 
Big5 To Unicode 함수에서 Multi Byte To Wide Char는 두 번 사용됩니다. 첫 번째는 필요한 버퍼 크기를 계산하고 두 번째는 본격적인 변환입니다.결과의 길이를 얼마나 설정했는지 실험해 봐야 한다. 왜냐하면 끝에 원하지 않는 문자가 있을지도 모르기 때문이다.그러나 0을 설정하지 않거나 설정할 수 없습니다. 이렇게 하면result가 주소 분배를 받지 못하고 전환이 잘못될 수 있습니다.
 
GB2312의 경우 번호 936이다.대부분의 디코딩 소프트웨어는 이 API를 사용했고 GB2312와 Big5의 상호 변환도 유니코드를 통해 이루어졌다.

좋은 웹페이지 즐겨찾기