#locale #posix #character #transliteration #iconv #text #os

text-transliterate

使用POSIX的SO iconv进行文本转写的简单工具

7个版本 (稳定)

2.0.0 2020年2月16日
1.1.3 2020年2月9日
1.0.0 2020年2月8日
0.1.0 2017年10月29日

#820 in 文本处理

Apache-2.0/MIT

44KB
1K SLoC

text-transliterate-rust

文本转写的概念验证(又名,尚未准备好投入生产)。它使用操作系统iconv和//TRANSLITERATE//IGNORE来转换不同地区之间的字符。

地区必须在操作系统上可用。

(你可以查看测试结果)

		let tt = TextTransliterate::new();
		let result = tt.transliterate("ü  ä  ö  ß  Ü  Ä  Ö ç ñ 的 😒", "de_DE.UTF-8");
		if let Ok(result) = result {
			assert_eq!("ue  ae  oe  ss  UE  AE  OE c n ? ?", result);
		}

为了正确使用地区(例如,正确转写德语字母),它必须使用C中的uselocale函数。这改变了线程的地区。为了避免,你可以使用“非线程”版本,它为执行uselocaleiconv创建一个新的线程

        let mut tt = TextTransliterateOffThread::new();
        let result = tt.transliterate("ü  ä  ö  ß  Ü  Ä  Ö ç ñ 的 😒", "de_DE.UTF-8");
        if let Ok(result) = result {
            assert_eq!("ue  ae  oe  ss  UE  AE  OE c n ? ?", result);
        }

注释

  1. 测试结果可能在不同的机器之间有所不同。请记住这一点。
  2. 代码依赖于GNU libc
  3. 存在可能导致问题的不安全代码

许可证

Apache-2.0/MIT

依赖项

~5–14MB
~177K SLoC