将%uXXXX替换为Ruby中相应的Unicode代码点
发布时间:2020-12-17 02:23:48 所属栏目:百科 来源:网络整理
导读:我有包含%uXXXX子串的文件名,其中XXXX是十六进制数字/数字,例如%u0151等.我通过应用URI.unescape获得了这些文件名,它能够将%XX子串替换为相应的字符,但是%uXXXX子串保持不变.我想用应用String#gsub的相应Unicode代码点替换它们.我尝试了以下,但没有成功
我有包含%uXXXX子串的文件名,其中XXXX是十六进制数字/数字,例如%u0151等.我通过应用URI.unescape获得了这些文件名,它能够将%XX子串替换为相应的字符,但是%uXXXX子串保持不变.我想用应用String#gsub的相应Unicode代码点替换它们.我尝试了以下,但没有成功:
"rep%u00fcl%u0151".gsub(/%u([0-9a-fA-F]{4,4})/,'u1') 我明白了: "repu00fclu0151" 而不是这个: "repül?" 解决方法
试试这段代码:
string.gsub(/%u([0-9A-F]{4})/i){[$1.hex].pack("U")} 在评论中,cremno有一个更快的解决方案: string.gsub(/%u([0-9A-F]{4})/i){$1.hex.chr(Encoding::UTF_8)} 在评论中,bobince增加了重要的限制,值得全面阅读. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |