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 文本处理
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
函数。这改变了线程的地区。为了避免,你可以使用“非线程”版本,它为执行uselocale
和iconv
创建一个新的线程
非线程示例(推荐)
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);
}
注释
- 测试结果可能在不同的机器之间有所不同。请记住这一点。
- 代码依赖于GNU libc
- 存在可能导致问题的不安全代码
许可证
Apache-2.0/MIT
依赖项
~5–14MB
~177K SLoC