Since not all platforms guarantee that String always uses UTF-8 encoding, you can use this cross-platform API to perform operations on such strings.

Static methods

@:keep@:keepstaticcharCodeAt(s:String, index:Int):Int

Similar to String.charCodeAt but uses the UTF8 character position.

@:keep@:keepstaticcompare(a:String, b:String):Int

Compare two UTF8 strings, character by character.


Decode an UTF8 string back to an ISO string. Throw an exception if a given UTF8 character is not supported by the decoder.


Encode the input ISO string into the corresponding UTF8 one.

@:keep@:keepstaticiter(s:String, chars:Int ‑> Void):Void

Call the chars function for each UTF8 char of the string.


Returns the number of UTF8 chars of the String.

@:keep@:keepstaticsub(s:String, pos:Int, len:Int):String

This is similar to String.substr but the pos and len parts are considering UTF8 characters.


Tells if the String is correctly encoded as UTF8.



Allocate a new Utf8 buffer using an optional bytes size.



Add the given UTF8 character code to the buffer.


Returns the buffer converted to a String.