1 unstable release

Uses new Rust 2024

new 0.1.0 May 14, 2025

#1286 in Text processing

MIT/Apache

9KB
157 lines

utf8-supported

A Rust library for determining the UTF-8 support of the current terminal locale.

Example:

use std::io::Write;

match utf8_supported::utf8_supported() {
    utf8_supported::Utf8Support::UTF8 => println!("is_utf8: UTF-8 ✅"),
    utf8_supported::Utf8Support::ASCII => println!("is_utf8: ASCII"),
    utf8_supported::Utf8Support::Latin1 => std::io::stdout()
        .write_all(b"is_utf8: Latin 1: \xb2\xb3\xb9\n")
        .unwrap(),
    utf8_supported::Utf8Support::Other => println!("is_utf8: Other"),
    utf8_supported::Utf8Support::Unknown => println!("is_utf8: Unknown"),
}

This library can also be used to ensure that a child process runs with the C locale:

#[cfg(unix)] 
{
    use std::process::Command;
    use utf8_supported::CommandUtf8Ext;

    let mut cmd = Command::new("ls");
    if utf8_supported::utf8_supported() != utf8_supported::Utf8Support::UTF8 {
        cmd.set_c_locale();
    }
    cmd.output().unwrap();
}

Dependencies

~0–7.5MB
~52K SLoC