在Ruby on Rails中将字符串转换为两个字节的十六进制unicode



我正在用必应翻译器翻译消息,并通过短信发送结果。结果字符串通常包含非英语字符,例如韩语、日语、希腊语。

我正在使用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

最新更新