Проста відповідь на поставлене запитання полягає в тому, що наявні рядки діаграм відрізняються від платформи до платформи.
Однак є шість, які обов'язково повинні бути присутніми, тому константи могли бути зроблені для тих давно. Я не знаю, чому їх не було.
JDK 1.4 зробив чудову справу, представивши тип Charset. На даний момент вони більше не хотіли б надавати струнні константи, оскільки мета - отримати всіх, хто використовує екземпляри Charset. То чому б тоді не надати шість стандартних констант Charset? Я запитав у Мартіна Бухгольца, оскільки він, здається, сидить поруч зі мною, і він сказав, що насправді не було особливо великої причини, за винятком того, що в той час все ще було напівзапечене - занадто мало API JDK було оновлено прийняти Charset, а з тих, що були, перевантаження Charset зазвичай виконувались трохи гірше.
Сумно, що лише в JDK 1.6 вони нарешті закінчили оснащувати все перевантаженням Charset. І що ця ситуація на відсталому рівні ефективності все ще існує (причина, чому це неймовірно дивно, і я не можу це пояснити, але пов'язане з безпекою!).
Довга історія - просто визначте власні константи або скористайтеся класом Charsets Guava, до якого пов’язаний Тоні Поні (хоча ця бібліотека насправді ще не випущена).
Оновлення:StandardCharsets
клас в JDK 7.
MessageDigest#getInstance()
до речі.