ruby unicode编码为汉字

在ruby中和java类似

当在支付串中默认打如unicode字符是自动生成为汉字。如:

s = "\u5473\u9053\u4e0d\u9519"
 p s
 #=> "看见" 

当通过程序进行数据的采集时,如数据本身就是\u9519时,则数据是无法进行转换的,因为在数据的详细信息时是\\u519,在通过字符的替换,s.to_s.gsub(/\\/, '\'),一定是会报错的,所以在程序中这让我头疼了好长一段时间。

下面是解决办法。

先将\\转换为%进行数据的校验s.to_s.gsub(/\\/, '%')

require 'cgi'
require 'iconv'
def uncode_unicodebi_utf(string)
  a=string
  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
  return c.to_s.encode("utf-8")
end


s="%u4EBAabcdef%u4EBA%u4EBA"
puts uncode_unicodebi_utf(s)



生成结果为

人abcdef人人



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值