Die einfache Antwort auf die gestellte Frage lautet, dass die verfügbaren Zeichensatzzeichenfolgen von Plattform zu Plattform variieren.
Es müssen jedoch sechs vorhanden sein, sodass Konstanten für diese vor langer Zeit erstellt werden könnten. Ich weiß nicht, warum sie es nicht waren.
JDK 1.4 hat mit der Einführung des Charset-Typs großartige Arbeit geleistet. Zu diesem Zeitpunkt hätten sie keine String-Konstanten mehr bereitstellen wollen, da das Ziel darin besteht, alle Benutzer dazu zu bringen, Charset-Instanzen zu verwenden. Warum also nicht die sechs Standard-Zeichensatzkonstanten bereitstellen? Ich habe Martin Buchholz gefragt, da er zufällig direkt neben mir sitzt, und er sagte, es gebe keinen wirklich besonders guten Grund, außer dass die Dinge zu diesem Zeitpunkt noch halbherzig waren - zu wenige JDK-APIs wurden nachgerüstet Akzeptieren Sie Charset, und von denen, die es waren, zeigten die Charset-Überladungen normalerweise etwas schlechtere Ergebnisse.
Es ist traurig, dass sie erst in JDK 1.6 endlich alles mit Charset-Überladungen ausgestattet haben. Und dass diese rückwärts gerichtete Leistungssituation immer noch besteht (der Grund dafür ist unglaublich seltsam und ich kann es nicht erklären, hängt aber mit der Sicherheit zusammen!).
Lange Rede, kurzer Sinn - definieren Sie einfach Ihre eigenen Konstanten oder verwenden Sie die Charsets-Klasse von Guava, mit der Tony the Pony verknüpft ist (obwohl diese Bibliothek noch nicht wirklich veröffentlicht wurde).
Update: Eine StandardCharsets
Klasse befindet sich in JDK 7.
MessageDigest#getInstance()
übrigens weiter.