在Ruby中将unicode直接量转化成为utf8字符
2009-02-23 12:52
218 查看
出处:http://yuweijun.blogspot.com/2008/12/rubyunicodeutf8.html
require 'cgi'
def unicode_utf8(unicode_string)
unicode_string.gsub(///u/w{4}/) do |s|
str = s.sub(///u/, "").hex.to_s(2)
if str.length < 8
CGI.unescape(str.to_i(2).to_s(16).insert(0, "%"))
else
arr = str.reverse.scan(//w{0,6}/).reverse.select{|a| a != ""}.map{|b| b.reverse}
# ["100", "111000", "000000"]
hex = lambda do |s|
(arr.first == s ? "1" * arr.length + "0" * (8 - arr.length - s.length) + s : "10" + s).to_i(2).to_s(16).insert(0, "%")
end
CGI.unescape(arr.map(&hex).join)
end
end
end
puts unicode_utf8('test/u4E2Dtest/u6587test/u6D4Btest/u8BD5test')
require 'cgi'
def unicode_utf8(unicode_string)
unicode_string.gsub(///u/w{4}/) do |s|
str = s.sub(///u/, "").hex.to_s(2)
if str.length < 8
CGI.unescape(str.to_i(2).to_s(16).insert(0, "%"))
else
arr = str.reverse.scan(//w{0,6}/).reverse.select{|a| a != ""}.map{|b| b.reverse}
# ["100", "111000", "000000"]
hex = lambda do |s|
(arr.first == s ? "1" * arr.length + "0" * (8 - arr.length - s.length) + s : "10" + s).to_i(2).to_s(16).insert(0, "%")
end
CGI.unescape(arr.map(&hex).join)
end
end
end
puts unicode_utf8('test/u4E2Dtest/u6587test/u6D4Btest/u8BD5test')
相关文章推荐
- C/C++ 各种字符编码字符串的转换 可用于XML文件的字符转化读写 (收集 GBK - UTF8 - Unicode - ANSI )
- 在2005年,Unicode 的第十万个字符被采纳且认可成为标准之一(超过这65535范围的Unicode字符,则需要使用一些诡异的技巧来实现)
- 如何在vb中将汉字转化成unicode
- python中将unicode(u'\u7684') 转中文字符
- ruby 中文字符to_json后乱码(unicode)
- c++ 字符直接的转化CString char int char*
- javascript类型转化加法就不会直接字符相加了
- ring3 char 字符数组 传入ring0后 转化为UNICODE_STRING处理
- python中文utf8编码后是占3个字符,unicode汉字为2字节
- 字符编码详细解释unicode与utf8的区别与联系
- UTF8转unicode的例子和NSString包含其他字符(控制字符和前后空格)的处理
- MySQL字符编码的讨论:如何处理emoji等4字节的Unicode字符 - utf8mb4 vs. utf8 Collations
- Unicode与UTF8相互转化(使用MultiByteToWideChar)
- java中文字符和特殊字符与unicode相互转化
- Unicode宽字符转化
- IOS中 打印字典、数组时 直接显示中文(而不是显示Unicode字符)
- 转载 ANSI、Unicode、UTF8相互转化的函数
- 嵌入式开发之字符叠加---gb2313 国标码,utf8 国际码,unicode 无码
- Unicode(UTF16)文件读写终极方案---用C++标准的字节流读取,转化为宽字符(wchar_t),再以字节流写入
- C++中ASCII、unicode与Utf8之间的相互转化