1. 程式人生 > >ruby unicode編碼為漢字

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人人