Wie kann ich die Datenträgergröße einer Zeichenfolge mit JavaScript schätzen?

8

Ich muss versuchen, die DISK Größe einer Textzeichenfolge (die Rohtext oder eine Base64-codierte Zeichenfolge für ein Bild / Audio / etc sein könnte) in JavaScript zu schätzen. Ich bin mir nicht sicher, wie ich das einschätzen soll. Die einzige Sache, wenn ich googlen kann, ist .length , also dachte ich, dass vielleicht jemand auf StackOverflow es wissen könnte ...

Der Grund, warum ich wissen muss, ist, dass ich ein localStorage-Skript habe, das prüfen muss, ob sich ein Benutzer seinem 5MB (oder 10MB in IE) Kontingent nähert und sie auffordert, die maximale Größe zu erhöhen für die Domäne. Also, wenn ein Benutzer, sagen wir, 4.5MBs Daten trifft, würde es mit

antworten
  

Sie nähern sich Ihrem Browser 5 MB Datenobergrenze. Bitte erhöhen Sie Ihre maximalen Daten um ... [Anweisungen zum Erhöhen für den Browser]

    
Oscar Godson 29.11.2010, 22:20
quelle

5 Antworten

2

Es wird nicht genau sein, aber Sie können die Anzahl der Bytes in einer Zeichenfolge zählen, um eine grobe Schätzung zu erhalten.

%Vor%

}

var mystring = 'tâ'; alert (bytes (mystring));

    
simshaun 29.11.2010, 22:30
quelle
2

Es hängt von Ihrer Zeichencodierung ab. Wenn Sie ASCII-Codierung verwenden, wird es str.length Bytes sein. Wenn Sie UTF-16 verwenden, wird es (Str.Länge * 2) Bytes sein. Wenn Sie UTF-8 verwenden, hängt dies von den Zeichen in der Zeichenfolge ab. (Einige Zeichen benötigen nur 1 Byte, andere können bis zu 4 Byte aufnehmen.) Wenn Sie mit Base64-codierten Daten arbeiten, befinden sich die Zeichen alle im ASCII-Bereich und belegen daher str.length-Bytes auf der Festplatte. Wenn Sie sie zuerst dekodieren und als Binärdatei speichern, würde das (Str.Länge * 3/4) Byte dauern. (Bei Base64 werden 3 uncodierte Bytes zu 4 codierten Bytes.)

BTW - Wenn Sie Joel Spolskys absolutes Minimum nicht alle Software-Entwickler gelesen haben, Positives über Unicode und Zeichensätze wissen müssen (keine Ausreden!) , sollten Sie dies sofort tun.

Ссылка

UPDATE: Wenn Sie localStorage verwenden, nehme ich an, dass Sie mit window.localStorage.length vertraut sind, obwohl dies nur sagt, wie viel verwendet wurde, nicht, ob Ihre neuen Daten passen. Ich würde auch sehr empfehlen, Tauchen Sie in HTML5 , vor allem den Abschnitt über die Lagerung:

Ссылка

Wenn sich etwas seit der Erstellung nicht geändert hat, bin ich nicht sicher, was Sie tun können, da localStorage Sie auf 5 MB pro Domain beschränkt, ohne dass der Benutzer sie erhöhen kann.

    
James Kovacs 29.11.2010 22:29
quelle
0

Wenn Sie über Speicherverbrauch sprechen, dann nein. Es gibt keine Möglichkeit, den verwendeten Speicher zuverlässig zu bestimmen (zumindest implementierungsunabhängig), da dies nicht Teil der ECMAScript-Spezifikation ist. Es hängt von Ihrer Zeichencodierung ab.

    
jwueller 29.11.2010 22:30
quelle
0

Es hängt von den Daten in Ihrer Zeichenfolge und von der Art ab, wie sie gespeichert werden. Wenn Ihre Base64-codierte Zeichenfolge als Base64-codierte Zeichenfolge gespeichert wird, entspricht die Länge der Größe auf der Festplatte. Wenn nicht, müssen Sie es dekodieren

Ich habe eine Lösung gefunden (obwohl es ein bisschen eklig aussieht) hier

%Vor%     
GolezTrol 29.11.2010 22:30
quelle
0

Sie können die Anzahl der Bytes in einer Zeichenfolge auf diese einfache und präzise Weise zählen

%Vor%     
sweeta 07.06.2016 10:21
quelle