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