ruby - 十六进制到字符串转换 - Ruby
问题描述
我正在尝试使用 Ruby 将十六进制转换为字符串,但它不适用于某些中文字符。我是红宝石的新手。
当前代码可以正常处理非中文字符,但现在代码需要支持中文字符。它使用 ISO-8859-1 和 UTF-8 编码器将 HexDecimal 转换为字符串:
extractpayload = "e5b7b2e5ae8ce68890e38082e68891e4bbace5b086e59ca8e5aea1e6a0b8e5b9b6e7a1aee8aea4e8aea2e58d95e5908ee58f91e8b4a7efbc8ce5b9b6e7ab8be58db3e4bba5e79fade4bfa1e5bda2e5bc8fe9809ae79fa5e682a8e3808220e69fa5e79c8be8aea2e58d95e4bfa1e681afe68896e7aea1e79086e794b5e5ad90e58f91e7a5a8";
gettransformedfullpayload1 = [extractpayload].pack("H*").force_encoding("ISO-8859-1").encode("UTF-8");
repl.it 链接: https ://repl.it/@bonsshah/Ruby-Hexdecimal-to-String-Conversion
预期输出:
已完成。我们将在审核并确认订单后发货,并立即以短信形式通知您。 查看订单信息或管理电子发票
目前得到这个错误的输出:
å·²å®æãæ们å°å¨å®¡æ ¸å¹¶ç¡®è®¤è®¢åååè´§ï¼å¹¶ç«å³ä»¥çä¿¡å½¢å¼éç¥æ¨ã æ¥ç订åä¿¡æ¯æ管ççµåå票
解决方案
它已经是十六进制转储的 UTF-8。
str = "e5b7b2e5ae8ce68890e38082e68891e4bbace5b086e59ca8e5aea1e6a0b8e5b9b6e7a1aee8aea4e8aea2e58d95e5908ee58f91e8b4a7efbc8ce5b9b6e7ab8be58db3e4bba5e79fade4bfa1e5bda2e5bc8fe9809ae79fa5e682a8e3808220e69fa5e79c8be8aea2e58d95e4bfa1e681afe68896e7aea1e79086e794b5e5ad90e58f91e7a5a8" => "e5b7b2e5ae8ce68890e38082e68891e4bbace5b086e59ca8e5aea1e6a0b8e5b9b6e7a1aee8aea4e8aea2e58d95e5908ee58f91e8b4a7efbc8ce5b9b6e7ab8be58db3e4bba5e79fade4bfa1e5bda2e5bc8fe9809ae79fa5e682a8e3808220e69fa5e79c8be8aea2e58d95e4bfa1e681afe68896e7aea1e79086e794b5e5ad90e58f91e7a5a8"
[str].pack('H*').force_encoding('utf-8') => "已完成。我们将在审核并确认订单后发货,并立即以短信形式通知您。 查看订单信息或管理电子发票"
推荐阅读
- couchdb - 获取在特定时间范围内更新的来自 couchDB 的所有文档
- python - Python - 如何使用字典来映射字符串的单个字符
- javascript - 以下html不是jinjia2渲染的
- jquery - 哪个 jQuery 多元素选择器优化得更好
- amazon-web-services - 错误:路由表和网络网关属于不同的网络
- java - Java:如何在句子中间添加 png 图像
- java - 如何告诉项目下载内部依赖?
- python - AUTHENTICATIONFAILED - LOGIN 凭据无效
- dask - 为什么对从 Parquet 文件构建的 Dask DataFrame 进行分类会大大增加其大小?
- python - 从数据框中获取一列以将其写入 csv 文件