Analysis updated 2026-05-18
Normalize Khmer user input before storing it so search and comparison work correctly.
Fix Khmer domain names or usernames that look identical but differ in encoding.
Prevent invisible malicious substitutions in code that uses Khmer identifiers.
Copy a single-file normalizer into a project without adding a package dependency.
| seanghay/betterkhmer | ezzuldinst/lspoof | alexzielenski/icofamily | |
|---|---|---|---|
| Stars | 14 | 14 | 11 |
| Language | Objective-C | Objective-C | Objective-C |
| Last pushed | — | — | 2013-12-24 |
| Maintenance | — | — | Dormant |
| Setup difficulty | easy | hard | easy |
| Complexity | 2/5 | 4/5 | 2/5 |
| Audience | developer | developer | developer |
Figures from each repo's GitHub metadata at analysis time.
Not published to any package registry, you copy a single source file into your project per language.
BetterKhmer is a text normalization library for the Khmer language, used in Cambodia, ported to 18 programming languages. Its job is to ensure that Khmer text which looks visually identical is also encoded identically, so that searching, storage, and security checks produce consistent results. The core problem it solves is that Khmer syllables are made up of consonants and vowel marks that can be arranged in multiple different orders in a text file yet render identically on screen. The same written word can exist as several distinct byte sequences. This creates real world issues: a search engine can return different results for visually identical queries typed in different apps, domain names that look the same can route to different servers, and variable names in code that appear identical can differ in encoding, making malicious substitutions invisible to code reviewers. The library provides a single normalize function in every language port. Calling it on any Khmer string produces a canonical form regardless of how the original was encoded. It supports both modern Khmer and Middle Khmer. Rather than a package installed from a registry, each language port is a single self-contained source file that you copy directly into your project. The ports are all verified against a shared test suite of 10,085 input and output pairs sampled from real Khmer text. The README includes a benchmark showing throughput across all 18 ports. The library is based on a Khmer encoding structure proposed to Unicode and is released under the MIT license.
A library that fixes inconsistent Khmer text encoding so identical-looking words are stored the same way, ported to 18 languages.
Mainly Objective-C. The stack also includes Objective-C, Python, Go.
MIT license: free to use, modify, and distribute, including commercially, as long as the original copyright notice is kept.
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.