UTF-8字符串转为AnsiString

原创 2001年06月12日 00:50:00
//江雪 2001.06.11 http://asnowcn.at.china.com //将UTF-8字符串转为代码页为CodePage的AnsiString。 function UTF8ToAnsiString(utf8str:string; CodePage:integer):AnsiString; var i:integer; buffer:widestring; ch,c1,c2:byte; begin result:=''; i:=1; while i<=Length(utf8str) do begin ch:=byte(utf8str[i]); setlength(buffer,length(buffer)+1); if (ch and $80)=0 then //1-byte buffer[length(buffer)]:=widechar(ch) else begin if (ch AND $E0) = $C0 then begin // 2-byte inc(i); c1 := byte(utf8str[i]); buffer[length(buffer)]:=widechar((word(ch AND $1F) SHL 6) OR (c1 AND $3F)); end else begin // 3-byte inc(i); c1 := byte(utf8str[i]); inc(i); c2 := byte(utf8str[i]); buffer[length(buffer)]:=widechar( (word(ch AND $0F) SHL 12) OR (word(c1 AND $3F) SHL 6) OR (c2 AND $3F)); end; end; inc(i); end; //while i := WideCharToMultiByte(codePage, WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR, @buffer[1], -1, nil, 0, nil, nil); if i>1 then begin SetLength(Result, i-1); WideCharToMultiByte(codePage, WC_COMPOSITECHECK or WC_DISCARDNS or WC_SEPCHARS or WC_DEFAULTCHAR, @buffer[1], -1, @Result[1], i-1, nil, nil); end; end;

UTF-8字符串转为AnsiString

//江雪 2001.06.11  http://asnowcn.at.china.com//将UTF-8字符串转为代码页为CodePage的AnsiString。function UTF8ToAnsi...
  • jiljil
  • jiljil
  • 2008年01月23日 11:19
  • 311

UTF-8字符串转为AnsiString

  • zgqtxwd
  • zgqtxwd
  • 2008年04月30日 22:44
  • 189

BCB中char类型与AnsiString类型的相互转换

1、String——>char: String  S="abc"; int  Length=S. Length(); char *Buffer= new  char[Length]; Buffer...
  • u013061929
  • u013061929
  • 2013年12月29日 17:58
  • 1809

Java字符串编码转换UTF-8

package com.cvicse.naba.common.utils; import java.io.UnsupportedEncodingException; /** * ...
  • tian_yan_jing
  • tian_yan_jing
  • 2012年07月16日 17:11
  • 10222

c++ builder 中 char 和 AnsiString字符串对比 效率慢的解决办法

在以往的c++开发经验中 我不太喜欢在结构体中直接使用AnsiString 类。 因为涉及到内存复制类或者指针引用是常常会出现莫名奇妙的问题。并且可移值性差。在以往需要处理字符串对比时常常这样写cha...
  • cmlxiaogeaaa
  • cmlxiaogeaaa
  • 2016年10月06日 16:24
  • 1077

WideString 还是 AnsiString ?谈谈字符编码

这篇这次不给分了,我发现我的分开始只降不升了,长此以往,岂不穷死。本来这一篇是讲关于XML字符编码的,我觉得写着写着好像与XML的关系不大了,就改了标题。所以,看的时候如果感觉到摸不到头脑,那就对了,...
  • xwchen
  • xwchen
  • 2007年03月21日 22:15
  • 4109

Delphi7及其以下版本的 VCL 只支持 Ansi, 所以... WideString 与 UTF8String (定义与 AnsiString 相同) 并没有办法正确的在 VCL 中显示 Del

Delphi7及其以下版本的 VCL 只支持 Ansi, 所以... WideString 与 UTF8String (定义与 AnsiString 相同) 并没有办法正确的在 VCL 中显示 ...
  • nextop88
  • nextop88
  • 2017年06月14日 11:35
  • 591

Delphi中文本文件Utf-8和Ansi转换

注意:没有仔细验证正确性。const  IS_TEXT_UNICODE_ASCII16 = $1;  IS_TEXT_UNICODE_REVERSE_ASCII16 = $10;  IS_TEXT_U...
  • newweapon
  • newweapon
  • 2008年06月05日 16:53
  • 2429

C++ builder :关键入门 AnsiString

其实是一个类(class),不过,它并不归属于VCL的框架,不是派生于TObject. 该类封装了C,C++里字符串的大多操作,并有所发展。方便了C++程序员在程序中使用字符串。下面挑典型和重要的说。...
  • genghouwang
  • genghouwang
  • 2012年03月23日 14:40
  • 1145

JS将URL中的UTF-8字符串转成中文字符

将URL中的UTF-8字符串转成中文字符,如将%E7%BC%96%E7%A8%8B%E8%AF%AD%E8%A8%80  转成“编程语言” 函数getCharFromUtf8实现如下: //...
  • xumengxing
  • xumengxing
  • 2012年09月15日 15:29
  • 7988
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UTF-8字符串转为AnsiString
举报原因:
原因补充:

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