如何使用JavaScript估算字符串的磁盘大小?

2024-05-21

我需要尝试估计DISKJavaScript 中文本字符串(可以是原始文本或图像/音频/等的 Base64 编码字符串)的大小。我不知道如何估计这个。当谷歌搜索时我唯一能找到的是.length所以我想 StackOverflow 上也许有人知道......

我需要知道的原因是我有一个 localStorage 脚本,需要(或希望拥有)能够检查用户何时接近其 5MB(或 IE 中的 10MB)配额,并提示他们增加域的最大大小。因此,如果用户点击 4.5MB 的数据,它会提示

您的浏览器已接近 5MB 数据上限。请将您的最大数据增加...[浏览器增加说明]


这将取决于您的字符编码。如果您使用 ASCII 编码,则它将是 str.length 字节。如果您使用 UTF-16,则它将是 (str.length * 2) 个字节。如果您使用 UTF-8,它将取决于字符串中的字符。 (某些字符仅占用 1 个字节,但其他字符可能最多占用 4 个字节。)如果您正在处理 Base64 编码的数据,则这些字符都在 ASCII 范围内,因此将占用磁盘上的 str.length 字节。如果您先解码它们并保存为二进制,则需要 (str.length * 3/4) 个字节。 (使用 Base64,3 个未编码字节变成 4 个编码字节。)

顺便说一句 - 如果你还没有读过乔尔·斯波尔斯基的书每个软件开发人员绝对必须了解 Unicode 和字符集的绝对最低限度(没有任何借口!),您应该立即这样做。

http://www.joelonsoftware.com/articles/Unicode.html http://www.joelonsoftware.com/articles/Unicode.html

更新:如果您使用 localStorage,我假设您熟悉 window.localStorage.length,尽管这仅告诉您已使用了多少,而不是您的新数据是否适合。我也强烈推荐阅读深入研究 HTML5,特别是关于存储的部分:

http://diveintohtml5.ep.io/storage.html http://diveintohtml5.ep.io/storage.html

除非自编写以来发生了一些变化,否则我不确定您可以做什么,因为 localStorage 将每个域限制为 5MB,用户无法增加它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用JavaScript估算字符串的磁盘大小? 的相关文章