`
kong1616
  • 浏览: 101563 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ruby %u开头的unicode编码转换

阅读更多
给大家贴一个,自己刚写的一个对%u+urlcode(unicodebi)格式的编码转换代码。
例如:原句为src="人abcdef人人"的编码为dst="%u4EBAabcdef%u4EBA%u4EBA",其中“人”的 unicode编码是"4EBA"。
下面的代码将dst重新转换为src(src中的汉字实行gb2312编码)

require 'cgi'
require 'iconv'
a="%u4EBAabcdef%u4EBA%u4EBA"
c=""
b=a.split('%u')
i=0
b.each do |now|
puts now
i+=1
(now=CGI.unescape(now);c+=now;next) if(i==1)
p=now
test1=p[0,4]
test=now[0,4]
test.insert(0,'%')
test.insert(3,'%')
test=CGI.unescape(test)
test=Iconv.conv("gb2312","unicodebig",test)
now.sub!(test1,test)
c+=now
end
分享到:
评论
1 楼 gypgyp 2011-07-08  
我是需要转换\u开头的直接量,查到了您的解决方案。不过,我参考了下CGI.unescape
的源程序,对您的程序作了精减。以下供您参考

require 'iconv'

str = '\u9AD8a\u9AD8'
str = str.gsub(/\\u([0-9a-fA-F]{4})/n) do
Iconv.conv("gb2312","unicodebig",[$1].pack('H*'))
end

puts str

相关推荐

Global site tag (gtag.js) - Google Analytics