With Python 3.6, I noticed that locale.setlocale(locale.LC_CTYPE, 'km_KH.UTF-8') produces an error. Just type: $ python3.6 >>> import locale >>> locale.setlocale(locale.LC_CTYPE, 'km_KH.UTF-8') Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python3.6/locale.py", line 598, in setlocale return _setlocale(category, locale) locale.Error: unsupported locale setting And if you type: LC_ALL=km_KH.UTF-8 locale you can notice that everything is set to "C": $ LC_ALL=km_KH.UTF-8 locale LANG=fr_FR.UTF-8 LC_CTYPE="C" LC_COLLATE="C" LC_TIME="C" LC_NUMERIC="C" LC_MONETARY="C" LC_MESSAGES="C" LC_ALL=km_KH.UTF-8