diff --git a/libraries/stdlib/src/kotlin/text/CharsetsJVM.kt b/libraries/stdlib/src/kotlin/text/CharsetsJVM.kt index 1bcf350661c..063e97eeb7c 100644 --- a/libraries/stdlib/src/kotlin/text/CharsetsJVM.kt +++ b/libraries/stdlib/src/kotlin/text/CharsetsJVM.kt @@ -54,4 +54,41 @@ public object Charsets { */ @JvmField public val ISO_8859_1: Charset = Charset.forName("ISO-8859-1") + + /** + * 32-bit Unicode (or UCS) Transformation Format, byte order identified by an optional byte-order mark + */ + public val UTF_32: Charset + @JvmName("UTF32") + get() = utf_32 ?: run { + val charset: Charset = Charset.forName("UTF-32") + utf_32 = charset + charset + } + private var utf_32: Charset? = null + + /** + * 32-bit Unicode (or UCS) Transformation Format, little-endian byte order. + */ + public val UTF_32LE: Charset + @JvmName("UTF32_LE") + get() = utf_32le ?: run { + val charset: Charset = Charset.forName("UTF-32LE") + utf_32le = charset + charset + } + private var utf_32le: Charset? = null + + /** + * 32-bit Unicode (or UCS) Transformation Format, big-endian byte order. + */ + public val UTF_32BE: Charset + @JvmName("UTF32_BE") + get() = utf_32be ?: run { + val charset: Charset = Charset.forName("UTF-32BE") + utf_32be = charset + charset + } + private var utf_32be: Charset? = null + } diff --git a/libraries/stdlib/test/text/StringJVMTest.kt b/libraries/stdlib/test/text/StringJVMTest.kt index a4d90116807..fef6989b71f 100644 --- a/libraries/stdlib/test/text/StringJVMTest.kt +++ b/libraries/stdlib/test/text/StringJVMTest.kt @@ -93,4 +93,10 @@ class StringJVMTest { assertEquals(listOf("Ast", "Beast", "asterisk"), list.sorted()) assertEquals(listOf("Ast", "asterisk", "Beast"), list.sortedWith(String.CASE_INSENSITIVE_ORDER)) } + + @test fun charsets() { + assertEquals("UTF-32", Charsets.UTF_32.name()) + assertEquals("UTF-32LE", Charsets.UTF_32LE.name()) + assertEquals("UTF-32BE", Charsets.UTF_32BE.name()) + } }