delphi中的编码转换

原创 2005年06月01日 21:33:00

function UnicodeEncode(Str:string;CodePage:integer):WideString;
var
  Len:integer;
begin

  Len:=Length(Str)+1;
  SetLength(Result,Len);

  Len:=MultiByteToWideChar(CodePage,0,PChar(Str),-1,PWideChar(Result),Len);
  SetLength(Result,Len-1); //end is #0
  ShowMessage(Result);
end;

function UnicodeDecode(Str:WideString;CodePage:integer):string;
var
  Len:integer;
begin
  Len:=Length(Str)*2+1;  //one for #0
  SetLength(Result,Len);
  Len:=WideCharToMultiByte(CodePage,0,PWideChar(Str),-1,PChar(Result),Len,nil,nil);
  SetLength(Result,Len-1);
end;

function Gb2Big5(Str:string):string;
begin
  SetLength(Result,Length(Str));
  LCMapString(GetUserDefaultLCID,LCMAP_TRADITIONAL_CHINESE,
    PChar(Str),Length(Str),
    PChar(Result),Length(Result));
  Result:=UnicodeDecode(UnicodeEncode(Result,936),950);
end;

function Big52Gb(Str:string):string;
begin
  Str:=UnicodeDecode(UnicodeEncode(Str,950),936);
  SetLength(Result,Length(Str));
  LCMapString(GetUserDefaultLCID,LCMAP_SIMPLIFIED_CHINESE,
    PChar(Str),Length(Str),
    PChar(Result),Length(Result));
end;

//关键使用了UnicodeToUtf8这个函数
function Utf8Encode(const WS: WideString): UTF8String;
var
  L: Integer;
  Temp: UTF8String;
begin
  Result := '';
  if WS = '' then Exit;
  SetLength(Temp, Length(WS) * 3); // SetLength includes space for null terminator
  L := UnicodeToUtf8(PChar(Temp), Length(Temp)+1, PWideChar(WS), Length(WS));
  if L > 0 then
    SetLength(Temp, L-1)
  else
    Temp := '';
  Result := Temp;
end;

procedure TForm1.Button1Click(Sender: TObject);
var y:wideString;
    x:String;
begin
  y:='I am 钱波';
  x:=Format('%d',[Length(y)]);
  ShowMessage(x);
  y:=UniCodeEncode(Edit1.Text,CP_ACP);
  ShowMessage(y);
end;

纪念经典的 D7(Delphi 7编码转换程序)

很喜欢Delphi 7,以前一直用它写好多有趣的程序,虽然不是专业程序员。 但我很奇怪的是,大家没写一些公用的单元,一起大家交流的,大概觉得写得挺好的代码,几乎都是Google抄的,国内的百度几乎代码...
  • rell336
  • rell336
  • 2014年01月02日 10:10
  • 2284

java文本编码转换

  • 2016年09月03日 17:02
  • 2KB
  • 下载

字符编码转换iconv

  • 2016年08月12日 15:05
  • 637KB
  • 下载

利用iconv函数族进行编码转换

一、利用iconv函数族进行编码转换 在LINUX上进行编码转换时,既可以利用iconv函数族编程实现,也可以利用iconv命令来实现,只不过后者是针对文件的,即将指定文件从一种编码转换为另一种编码...

编码转换小工具

  • 2017年02月21日 15:46
  • 1.83MB
  • 下载

ruby编码转换

  • 2016年06月30日 10:07
  • 2KB
  • 下载

详细介绍Base64的编码转换方式。

下面,详细介绍Base64的编码转换方式。 所谓Base64,就是说选出64个字符----小写字母a-z、大写字母A-Z、数字0-9、符号"+"、"/"(再加上作为垫字的"=",实际上是65个字符)...

编码转换工具

  • 2013年09月11日 16:54
  • 23KB
  • 下载

Java 正确的做字符串编码转换

Java 正确的做字符串编码转换 字符串的内部表示? 字符串在java中统一用unicode表示( 即utf-16 LE) , 对于 String s = "你好哦!"; 如果源码文件是GB...
  • H12KJGJ
  • H12KJGJ
  • 2017年06月20日 12:55
  • 2004
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:delphi中的编码转换
举报原因:
原因补充:

(最多只允许输入30个字)