python - 将 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'
我想在这里完成两件事:
- 了解 Python 实现
- 在 Ruby 2.6 中复制相同的过程
到目前为止,我已经想出了以下
text = 'আমার সোনার বাংলা'.encode("UTF-16BE")
p text
#output-> "\u0986\u09AE\u09BE\u09B0 \u09B8\u09CB\u09A8\u09BE\u09B0 \u09AC\u09BE\u0982\u09B2\u09BE"
解决方案
通常使用以下unpack
方法完成从字符串到字节的转换:
# ref unpack documentation for specifics, but I use 'H*' here for hex
message.encode('utf-16-be').unpack('H*')
推荐阅读
- elasticsearch - 聚合后过滤文档
- node.js - 错误:SQLITE_CANTOPEN:无法打开数据库文件
- django - Django 使用通用视图,错误 http 405
- http - 重定向到 https 的子页面
- javascript - 给定对象作为输入,无法找到对象是否存在于对象数组中
- c# - 根据项目的大小在面板上添加垂直滚动条和“换行符”
- sql - 使用 SQL 空间数据类型(STIntersect/STContains 等)返回 lat long 所在的多边形
- javascript - 如何根据用户的输入内容重定向用户?
- android - 使用 Drawable 设置 ActionBar 背景的问题
- python - 使用 Pandas 数据框按列分组值计数