我正在用必应翻译器翻译消息,并通过短信发送结果。结果字符串通常包含非英语字符,例如韩语、日语、希腊语。
我正在使用Clickatell短信网关,并根据Clickatell规格在这里:http://www.clickatell.com/downloads/http/Clickatell_HTTP.pdf…我想我应该把我的字符串编码成双字节的Unicode,十六进制编码。
例如,希腊字符:
ΩΨΘ
转换后应该变成:
03 a903a80398
然后在我的HTTP get请求中添加到查询字符串。
然而,我的问题是在我的Ruby on Rails应用程序中找到简洁的语法。
我喜欢这样有趣的。:)试试这个:
input.codepoints.map { |c| "%04X" % c }.join
我看到的:
[1] pry(main)> x = "u03A9u03A8u0398"
=> "ΩΨΘ"
[2] pry(main)> x.codepoints.map { |c| "%04X" % c }.join
=> "03A903A80398"
不需要分割——使用each_char代替迭代。直接在each_char(或collect)上调用map,并使用大写"X"而不是小写"X"而不是大写
input.each_char.map{|c| "%04X" % c.ord}.join