关于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的。而且并没有区分英文字符,和半角标点。
...全文
140 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
武稀松 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
人工置顶
回复
相关推荐
发帖
语言基础/算法/系统设计
创建于2007-08-02

1.6w+

社区成员

Delphi 语言基础/算法/系统设计
申请成为版主
帖子事件
创建了帖子
2013-05-09 08:41
社区公告
暂无公告