关于unicode转utf-8

Y.A.K.E 2013-05-09 08:41:02
我的unicode代码
\u8bf7\u52ff\u62cd\u6444!!\u5076\u50cf\u5185\u5e55 1280x720.EP01.\u6df1\u591c\u5267\u30d0\u30fc.\u5b57\u5e55\u7ec4.mkv


找到两种办法,
一种是执行js

我的JS脚本如下

function Uncode_utf8 (pValue) {return unescape(pValue.replace(/&#x/g,'%u').replace(/\\u/g,'%u').replace(/;/g,''));}


我用
..
CreateOleObject('ScriptControl');
..
script.Eval(Func)
执行不知道怎么传值给js




另外一种方法
在万一老师博客看到

function Unicode_str(text: string):string;
var
i,len: Integer;
ws: WideString;
begin
ws := '';
i := 1;
len := Length(text);
while i < len do
begin
ws := ws + Widechar(StrToInt('$' + Copy(text,i,4)));
i := i+4;
end;
Result := ws;
end;


但是这种不能解\u的。而且并没有区分英文字符,和半角标点。
...全文
439 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
武稀松 2013-05-10
  • 打赏
  • 举报
回复
刚才那个不完整,给你写了两个完整的函数.所有的转义符都处理了. http://www.raysoftware.cn/?p=228
武稀松 2013-05-10
  • 打赏
  • 举报
回复
帮你写一个吧,也没几行代码. const v = '\u8bf7\u52ff\u62cd\u6444!!\u5076\u50cf\u5185\u5e55 1280x720.EP01.\u6df1\u591c\u5267\u30d0\u30fc.\u5b57\u5e55\u7ec4.mkv'; function UnicodeDecode(const value: Widestring): WideString; var P: PWideChar; v: WideChar; tmp : Widestring; begin P := PChar(value); while P^ <> #0 do begin v := #0; case P^ of '\': begin Inc(P); case P^ of '\': v := '\'; 'u': begin tmp := Copy(p,2,4); v := WideChar(StrToInt('$' + tmp)); Inc(p, 4); end; end; end; else V := P^; end; Result := Result + v; Inc(P); end; end; procedure TForm10.Button1Click(Sender: TObject); begin Caption := UnicodeDecode(v); end;
武稀松 2013-05-10
  • 打赏
  • 举报
回复
SuperObject中Json用的就是这种编码方式.你可以找一个把里面的解码扒出来
Y.A.K.E 2013-05-10
  • 打赏
  • 举报
回复
引用 3 楼 wr960204 的回复:
帮你写一个吧,也没几行代码. const v = '\u8bf7\u52ff\u62cd\u6444!!\u5076\u50cf\u5185\u5e55 1280x720.EP01.\u6df1\u591c\u5267\u30d0\u30fc.\u5b57\u5e55\u7ec4.mkv'; function UnicodeDecode(const value: Widestring): WideString; var P: PWideChar; v: WideChar; tmp : Widestring; begin P := PChar(value); while P^ <> #0 do begin v := #0; case P^ of '\': begin Inc(P); case P^ of '\': v := '\'; 'u': begin tmp := Copy(p,2,4); v := WideChar(StrToInt('$' + tmp)); Inc(p, 4); end; end; end; else V := P^; end; Result := Result + v; Inc(P); end; end; procedure TForm10.Button1Click(Sender: TObject); begin Caption := UnicodeDecode(v); end;
测试OK. XE2。 非常感谢!
Y.A.K.E 2013-05-09
  • 打赏
  • 举报
回复
人工置顶

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧