【问题标题】:Javascript analogue of Python's string.encode('UTF-8')Python 的 string.encode('UTF-8') 的 Javascript 类似物
【发布时间】:2020-08-07 17:36:45
【问题描述】:

我有一个代表一些二进制数据的字符串,如下所示: \x89PNG\x1a\x00\x00\x00IHDR\x00\x00

我需要按原样将此字符串发布到某些 API 等,但问题是 Javascript 会自动将其转换为 PNG

.escape、.encodeURI.. 等都无济于事

在 Python 中,这种转换可以像 string.encode('UTF-8') 那样完成,但我在 JS 中找不到类似的东西。

也许有人知道图书馆或可能有帮助的东西?

【问题讨论】:

  • 你是如何上传的?它需要在 FormData 中,而不是字符串中。
  • string.encode("UTF-8") 用于包含文本的二进制数据。 PNG 数据不是文本,将其编码为 UTF-8 是不正确的。
  • @Barmar 我愿意,问题是我需要将加密签名添加到标题中。签名是从我发布的全部数据生成的,包括 PNG。这就是为什么我需要这个字符串
  • 遍历调用string.charCodeAt(i)的字符串以获取数字代码并计算签名。
  • "我有一个代表一些二进制数据的字符串" - 你为什么不使用类型化数组/数组缓冲区?是字符串"\\x89PNG\\x1a\\x00\\x00\\x00IHDR\\x00\\x00" 还是真的包含字节作为字符"\x89PNG\x1a\x00\x00\x00IHDR\x00\x00"

标签: javascript utf-8


【解决方案1】:

在 Javascript 中,我们通常为此使用 Base64

你可以这样做

var encodedData = window.btoa(stringToEncode);
var decodedData = window.atob(encodedData);

你可能也会觉得这很有趣

function encode_utf8(s) {
  return unescape(encodeURIComponent(s));
}

function decode_utf8(s) {
  return decodeURIComponent(escape(s));
}

或参考https://stackoverflow.com/a/22373061/6302200

【讨论】:

  • 谢谢!该参考文献有很多有趣的粗俗
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-29
  • 2014-04-28
  • 2014-08-14
  • 2020-12-07
  • 2011-10-11
相关资源
最近更新 更多