2

我正在使用 Bing Translator 翻译消息并通过 SMS 文本消息发送结果。结果字符串通常包含非英语字符,例如韩语、日语、希腊语。

我正在使用 Clickatell SMS 网关,并根据此处的 Clickatell 规范:http://www.clickatell.com/downloads/http/Clickatell_HTTP.pdf ... 我想我应该用两字节 Unicode 十六进制编码我的字符串编码。

例如,希腊字符:

ΩΨΘ</p>

转换后应该变成:

03A903A80398

然后将其添加到我的 HTTP 获取请求中的查询字符串中。

然而,我的问题是在我的 Ruby on Rails 应用程序中简洁地找到语法。

4

2 回答 2

3

我喜欢这样有趣的。:) 试试这个:

input.codepoints.map { |c| "%04X" % c }.join

我所看到的:

[1] pry(main)> x = "\u03A9\u03A8\u0398"
=> "ΩΨΘ"
[2] pry(main)> x.codepoints.map { |c| "%04X" % c }.join
=> "03A903A80398"
于 2014-07-15T18:55:13.817 回答
0

不需要拆分——使用 each_char 代替迭代。直接在 each_char (或收集)上调用 map 并使用大写“X”而不是小写“x”而不是大写

input.each_char.map{|c| "%04X" % c.ord}.join
于 2014-07-15T20:26:26.843 回答