javascript - 将 ASCII 符号编码为 UTF-8 表示
问题描述
我有一个我知道肯定只有ASCII
字母的字符串。
JS
默认情况下将字符串视为字符串UTF-8
,因此这意味着每个字符最多占用 4 个字节,即 ASCII 的 4 倍。
我正在尝试通过具有and函数来压缩/节省空间/获得最短的字符串。encode
decode
我想过ASCII
在一个UTF-8
字符串上表示 4 个字符并通过它实现我的目标,有没有这样的东西?
如果不是,那么压缩ASCII
字符串的最佳方法是什么,以便通过编码和解码得到相同的字符串?
解决方案
实际上,JavaScript 以 UTF-16 编码程序字符串,它使用 2 个八位字节(16 位)用于 BMP(基本多语言平面)中的 Unicode 字符,并使用 4 个八位字节(32 位)用于其之外的字符。所以至少在内部,ASCII 字符使用 2 个字节。
有空间将两个 ASCII 字符打包成 16 位,因为它们每个只使用 7 位。2**16
此外,由于和2**14
is之间的差异49152
,以及 UTF-16 中代理对使用的编码数量是(据称)2048
,您应该能够设计一种编码方案来避免代理使用的代码点范围。
您还可以使用 8 位类型的数组来保存 ASCII 字符,同时避免自定义压缩算法的复杂性。
如今,压缩 7 位 ASCII 以在 JavaScript 中使用的目的在很大程度上(完全?)是学术性的,而不是需要的东西。请注意,由于 UTF-8 的设计,将 7 位 ASCII 内容编码为 UTF-8(用于传输或文件编码)仅使用一个字节用于 ASCII 字符。
推荐阅读
- python - 使用 python 创建一个套接字服务器,并从另一个网络\国家访问它
- html - 无法在引导程序 5 导航选项卡中的选项卡之间切换
- python - 相机视频和使用 Python Kivy 拍照
- constraint-programming - 如何在 minizinc 中返回变量的类型?
- javascript - 多次邀请命令机器人回复发送消息
- python - 将多个 API 调用写入单个 JSON 文件
- php - 网站遇到意外错误。请稍后再试。错误:-- 安装 Drupal
- matlab - 在同一轴上绘制两组数据
- php - get_file_contents:HTTP 请求失败!HTTP/1.1 400 错误请求
- swiftui - Swift UI 仅在符号之外着色