如果将 URL 中的 %23%E6... 转换成汉字?(50分)

  • 主题发起人 主题发起人 foxczf
  • 开始时间 开始时间
F

foxczf

Unregistered / Unconfirmed
GUEST, unregistred user!
如果将 URL 中的 %23%E6... 转换成汉字?
 
如果你使用的ASP编程,或者是MTS对象,就简单了,因为ASP的内置对象就可以
function HTMLEncode(const bstrIn: WideString): WideString; safecall;
function MapPath(const bstrLogicalPath: WideString): WideString; safecall;
function URLEncode(const bstrIn: WideString): WideString; safecall;
如果是外部程序,例子如下:
我的笔记:
delphi 编码转换 unicode gbk big5
(转载)
[ 2006-03-23 15:39:23 | 作者: Admin ]
字体大小: 大 | 中 | 小
以下代码在DELPHI 7上调试通过,主要使用了api函数中MultiByteToWidechar

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
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; -
=======================
方法二:
后来想到了用Unicode编码,但该死的Delphi控件竟然不支持Unicode,后来在网上找到了Tnt控件,可以支持Unicode不过而项目已经差不多快好了,要大规模换控件是不可能的,就想到读一下源代码,看看Tnt控件是如何做到的。读完之后一阵绝望,Tnt控件几乎全用W结尾的API,连创建窗体都是用CreateWindowExW,那还有什么好话说呢,自己重做就不如全换Tnt控件
----------------------
Delphi: 将unicode码转换为汉字
Night @ 2004-12-01 21:12


function UnicodeToAnsi(SubUnicode: string):string; //将unicode码转换为汉字
var a:array[0..500] of char;
s1,s2:char;
substr1,substr2,s:string;
str:string;
i:integer;
begin
if length(SubUnicode) mod 4 = 0 then
Begin



str:='';
for i:=1 to length(SubUnicode) div 4 do
Begin
s:='';
substr1:=copy(SubUnicode,i*4-3,2);
substr2:=copy(SubUnicode,i*4-1,2);
s1:=chr(hextoint(substr1));
s2:=chr(hextoint(substr2));
s:=s+s2+s1;
strpcopy(a,s);
str:=str+copy(widechartostring(@(a[0])),1,2);
end;
result:=str;
end;
end;



function HexToInt(hex:string):cardinal;
const cHex='0123456789ABCDEF';
var mult,i,loop:integer;
begin
result:=0;
mult:=1;
for loop:=length(hex)downto 1 do
begin
i:=pos(hex[loop],cHex)-1;
if (i<0) then i:=0;
inc(result,(i*mult));
mult:=mult*16;
end;
end;
-----
tnt控件下载地址
tnt delphi unicode controls 版  本:
文件大小:314.7k
软件语言:简体中文
授权方式:免费版
相关链接:程序演示
开 发 商:本站搜集
运行环境:
添加时间:2006-01-13
发布人:本站搜集

本站搜集最近发布的资源:


留言通知我们。
*欢迎广大作者给我们提供源码以及使用说明。下载操作前请详细阅读[版权说明].
资源介绍:
完全解决了vcl控件不支持unicode的问题,让你开发国际化的程序变得更为高效,含源码。

地址:
http://www.ribaidu.org/codechinanet/resource/html/2006-01/13/131419.html
 
还是不行啊
http://www.google.cn/search?hl=zh-CN&newwindow=1&q=IE+%E6%8C%89%E9%92%AE+delphi&btnG=%E6%90%9C%E7%B4%A2&meta=
转不成汉字
 
关注~~~~~
 
后退
顶部