首页 > 解决方案 > 将 Ruby 字符串转换为 utf-16be | Python 的 Ruby 等效代码

问题描述

我正在尝试使用 SMS 网关发送孟加拉语文本。但是它通常不支持孟加拉语文本。他们的文档说我需要将 SMS 字符串转换为 utf-16be;没有任何其他细节。但是,我在这里找到了我正在寻找的Python实现。

>>> message = 'আমার সোনার বাংলা'
>>> message
'আমার সোনার বাংলা'

>>> message.encode('utf-16-be')
b'\t\x86\t\xae\t\xbe\t\xb0\x00 \t\xb8\t\xcb\t\xa8\t\xbe\t\xb0\x00 \t\xac\t\xbe\t\x82\t\xb2\t\xbe'

>>> message.encode('utf-16-be').hex()
'098609ae09be09b0002009b809cb09a809be09b0002009ac09be098209b209be'

>>> message.encode('utf-16-be').hex().upper()
'098609AE09BE09B0002009B809CB09A809BE09B0002009AC09BE098209B209BE'


我想在这里完成两件事:


到目前为止,我已经想出了以下

text = 'আমার সোনার বাংলা'.encode("UTF-16BE")
p text
#output-> "\u0986\u09AE\u09BE\u09B0 \u09B8\u09CB\u09A8\u09BE\u09B0 \u09AC\u09BE\u0982\u09B2\u09BE"

标签: pythonrubyunicode-string

解决方案


通常使用以下unpack方法完成从字符串到字节的转换:

# ref unpack documentation for specifics, but I use 'H*' here for hex
message.encode('utf-16-be').unpack('H*')

推荐阅读