delphi,url中文编码

1、参考https://www.cnblogs.com/lucken2000/p/17582930.html

2、引用 HttpApp或IdURI
3、

function UrlEncodeUTF8(stInput : widestring): string;
const
  hex : array[0..255] of string = (
   '%00', '%01', '%02', '%03', '%04', '%05', '%06', '%07',
   '%08', '%09', '%0a', '%0b', '%0c', '%0d', '%0e', '%0f',
   '%10', '%11', '%12', '%13', '%14', '%15', '%16', '%17',
   '%18', '%19', '%1a', '%1b', '%1c', '%1d', '%1e', '%1f',
   '%20', '%21', '%22', '%23', '%24', '%25', '%26', '%27',
   '%28', '%29', '%2a', '%2b', '%2c', '%2d', '%2e', '%2f',
   '%30', '%31', '%32', '%33', '%34', '%35', '%36', '%37',
   '%38', '%39', '%3a', '%3b', '%3c', '%3d', '%3e', '%3f',
   '%40', '%41', '%42', '%43', '%44', '%45', '%46', '%47',
   '%48', '%49', '%4a', '%4b', '%4c', '%4d', '%4e', '%4f',
   '%50', '%51', '%52', '%53', '%54', '%55', '%56', '%57',
   '%58', '%59', '%5a', '%5b', '%5c', '%5d', '%5e', '%5f',
   '%60', '%61', '%62', '%63', '%64', '%65', '%66', '%67',
   '%68', '%69', '%6a', '%6b', '%6c', '%6d', '%6e', '%6f',
   '%70', '%71', '%72', '%73', '%74', '%75', '%76', '%77',
   '%78', '%79', '%7a', '%7b', '%7c', '%7d', '%7e', '%7f',
   '%80', '%81', '%82', '%83', '%84', '%85', '%86', '%87',
   '%88', '%89', '%8a', '%8b', '%8c', '%8d', '%8e', '%8f',
   '%90', '%91', '%92', '%93', '%94', '%95', '%96', '%97',
   '%98', '%99', '%9a', '%9b', '%9c', '%9d', '%9e', '%9f',
   '%a0', '%a1', '%a2', '%a3', '%a4', '%a5', '%a6', '%a7',
   '%a8', '%a9', '%aa', '%ab', '%ac', '%ad', '%ae', '%af',
   '%b0', '%b1', '%b2', '%b3', '%b4', '%b5', '%b6', '%b7',
   '%b8', '%b9', '%ba', '%bb', '%bc', '%bd', '%be', '%bf',
   '%c0', '%c1', '%c2', '%c3', '%c4', '%c5', '%c6', '%c7',
   '%c8', '%c9', '%ca', '%cb', '%cc', '%cd', '%ce', '%cf',
   '%d0', '%d1', '%d2', '%d3', '%d4', '%d5', '%d6', '%d7',
   '%d8', '%d9', '%da', '%db', '%dc', '%dd', '%de', '%df',
   '%e0', '%e1', '%e2', '%e3', '%e4', '%e5', '%e6', '%e7',
   '%e8', '%e9', '%ea', '%eb', '%ec', '%ed', '%ee', '%ef',
   '%f0', '%f1', '%f2', '%f3', '%f4', '%f5', '%f6', '%f7',
   '%f8', '%f9', '%fa', '%fb', '%fc', '%fd', '%fe', '%ff');
var
  iLen,iIndex : integer;
  stEncoded : string;
  ch : widechar;
begin
  iLen := Length(stInput);
  stEncoded := '';
  for iIndex := 1 to iLen do
  begin
    ch := stInput[iIndex];
    result := '';

    if (ch >= 'A') and (ch <= 'Z') then
      stEncoded := stEncoded + ch
    else if (ch >= 'a') and (ch <= 'z') then
      stEncoded := stEncoded + ch
    else if (ch >= '0') and (ch <= '9') then
      stEncoded := stEncoded + ch
    else if (ch = '/') then
      stEncoded := stEncoded + ch
    else if ((ch = '*') or (ch = '.') or (ch = '/') or (ch = '\') or (ch = '|')
      or (ch = ':') or (ch = '<')  or (ch = '>') or (ch = '"') or (ch = '_')
      or (ch = '-') or (ch = '~') ) then
        stEncoded := stEncoded + ch
    else if (Ord(ch) <= $07F) then
      stEncoded := stEncoded + UpperCase(hex[Ord(ch)])
    else if (Ord(ch) <= $7FF) then
    begin
       stEncoded := stEncoded + UpperCase(hex[$c0 or (Ord(ch) shr 6)]);
       stEncoded := stEncoded + UpperCase(hex[$80 or (Ord(ch) and $3F)]);
    end
    else
    begin
       stEncoded := stEncoded + UpperCase(hex[$e0 or (Ord(ch) shr 12)]);
       stEncoded := stEncoded + UpperCase(hex[$80 or ((Ord(ch) shr 6) and ($3F))]);
       stEncoded := stEncoded + UpperCase(hex[$80 or ((Ord(ch)) and ($3F))]);
    end
  end;
  result := (stEncoded);
end;  


msg := '中文路径测试';
// 方法1
url:=Aurl+'?cn_content='+MinioUrlEncodeUTF8(msg)+'&test=123';
// 方法2
url:=Aurl+'?cn_content='+HttpEncode(UTF8EnCode(msg))+'&test=123';
// 方法3
url:=Aurl+'?cn_content='+ TIdURI.ParamsEncode(UTF8EnCode(msg))+'&test=123';

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值