A UTF-8 Encoding Validator.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


A UTF-8 Validator State Machine

Provides an implementation of a state machine for validating UTF-8 encoded strings. Clients may request that encoding errors be reported in several ways:

  • simple true / false indicator

  • a raised exception

What This gem does Not Provide

  • UTF-8 Encoding

  • UTF-8 Decoding

That functionality is left as an exercise for the reader.

Thanks To

The Unicode Consortium

At unicode.org/ for all the information published there.

Frank Yung-Fong Tang

For the state machine algorithm. See: unicode.org/mail-arch/unicode-ml/y2003-m02/att-0467/01-The_Algorithm_to_Valide_an_UTF-8_String

Markus Kuhn

For invalid test data. www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt

Useful Information

Other interesting and/or useful information can be found:

A Word On Ruby Versions

It is expected that this validator will be used in Ruby environments prior to 1.9.x. However, nothing prohibits use with Ruby 1.9 or 2.0. Tests recognize these environments and adjust behavior accordingly.

Reporting Issues

Please report issues on the tracker at github:

Web Based Documentation

Human readable documentation can be found at:

Contributing to the utf8_validator gem

  • Check out the latest master to make sure the feature hasn't been implemented or the bug hasn't been fixed yet.

  • Check out the issue tracker to make sure someone already hasn't requested it and/or contributed it.

  • Fork the project.

  • Start a feature/bugfix branch.

  • Commit and push until you are happy with your contribution.

  • Make sure to add tests for it. This is important so it does not break in in a future version unintentionally.

  • Please try not to modify the Rakefile or VERSION file. If you require your own version please isolate the version update to its own commit so cherry-pick or rebase can be used to skip it.

  • Request a pull.


Copyright © 2011-2014 Guy Allard. See LICENSE.txt for further details.