Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Forums
  - IRC
  - Wiki
  - GitHub
  - Issues
  - Get involved
  - Contributors
  - Foundation
  - Donate
  - Sponsors
- Resources
  - Tour
  - Books
  - Tutorials
  - Tools
  - Editors
  - IDEs
  - Visual D
  - Acknowledgments
  - D Style
  - Glossary
  - Sitemap

Search
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

# rt.util.utf

Encode and decode UTF-8, UTF-16 and UTF-32 strings.
For Win32 systems, the C wchar_t type is UTF-16 and corresponds to the D wchar type. For Posix systems, the C wchar_t type is UTF-32 and corresponds to the D `utf`.dchar type.
UTF character support is restricted to (\u0000 <= character <= \U0010FFFF).
See Also:
Wikipedia
http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
http://anubis.dkuug.dk/JTC1/SC2/WG2/docs/n1335
License:
Boost License 1.0.
Authors:
Walter Bright, Sean Kelly

Source src/rt/util/utf.d

pure nothrow @nogc @safe bool `isValidDchar`(dchar `c`);
  Test if `c` is a valid UTF-32 character.
  \uFFFE and \uFFFF are considered valid by this function, as they are permitted for internal use by an application, but they are not allowed for interchange by the Unicode standard.
  Returns:
  `true` if it is, `false` if not.
pure nothrow @nogc @safe uint `stride`(in char[] `s`, size_t `i`);
  `stride`() returns the length of a UTF-8 sequence starting at index `i` in string `s`.
  Returns:
  The number of bytes in the UTF-8 sequence or 0xFF meaning `s`[`i`] is not the start of of UTF-8 sequence.
pure nothrow @nogc @safe uint `stride`(in wchar[] `s`, size_t `i`);
  `stride`() returns the length of a UTF-16 sequence starting at index `i` in string `s`.
pure nothrow @nogc @safe uint `stride`(in dchar[] `s`, size_t `i`);
  `stride`() returns the length of a UTF-32 sequence starting at index `i` in string `s`.
  Returns:
  The return value will always be 1.
pure @safe size_t `toUCSindex`(in char[] `s`, size_t `i`);
pure @safe size_t `toUCSindex`(in wchar[] `s`, size_t `i`);
pure nothrow @nogc @safe size_t `toUCSindex`(in dchar[] `s`, size_t `i`);
  Given an index `i` into an array of characters `s`[], and assuming that index `i` is at the start of a UTF character, determine the number of UCS characters up to that index `i`.
pure @safe size_t `toUTFindex`(in char[] `s`, size_t `n`);
pure nothrow @nogc @safe size_t `toUTFindex`(in wchar[] `s`, size_t `n`);
pure nothrow @nogc @safe size_t `toUTFindex`(in dchar[] `s`, size_t `n`);
  Given a UCS index `n` into an array of characters `s`[], return the UTF index.
pure @safe dchar `decode`(in char[] `s`, ref size_t `idx`);
pure @safe dchar `decode`(in wchar[] `s`, ref size_t `idx`);
pure @safe dchar `decode`(in dchar[] `s`, ref size_t `idx`);
  Decodes and returns character starting at `s`[`idx`]. `idx` is advanced past the decoded character. If the character is not well formed, a UtfException is thrown and `idx` remains unchanged.
pure nothrow @safe void `encode`(ref char[] `s`, dchar `c`);
pure nothrow @safe void `encode`(ref wchar[] `s`, dchar `c`);
pure nothrow @safe void `encode`(ref dchar[] `s`, dchar `c`);
  Encodes character `c` and appends it to array `s`[].
pure nothrow @nogc @safe ubyte `codeLength`(C)(dchar `c`);
  Returns the code length of `c` in the encoding using C as a code point. The code is returned in character count, not in bytes.
pure @safe void `validate`(S)(in S `s`);
  Checks to see if string is well formed or not. S can be an array of char, wchar, or dchar. Throws a UtfException if it is not. Use to check all untrusted input for correctness.
pure nothrow @safe string `toUTF8`(string `s`);
pure @trusted string `toUTF8`(in wchar[] `s`);
pure @trusted string `toUTF8`(in dchar[] `s`);
  Encodes string `s` into UTF-8 and returns the encoded string.
pure @trusted wstring `toUTF16`(in char[] `s`);
pure @safe wptr `toUTF16z`(in char[] `s`);
pure nothrow @safe wstring `toUTF16`(wstring `s`);
pure nothrow @trusted wstring `toUTF16`(in dchar[] `s`);
  Encodes string `s` into UTF-16 and returns the encoded string. `toUTF16z`() is suitable for calling the 'W' functions in the Win32 API that take an LPWSTR or LPCWSTR argument.
pure @trusted dstring `toUTF32`(in char[] `s`);
pure @trusted dstring `toUTF32`(in wchar[] `s`);
pure nothrow @safe dstring `toUTF32`(dstring `s`);
  Encodes string `s` into UTF-32 and returns the encoded string.

Copyright © 1999-2018 by the D Language Foundation | Page generated by Ddoc on Sat Apr 14 16:39:25 2018