3 个版本
0.1.2 | 2023 年 8 月 10 日 |
---|---|
0.1.1 | 2023 年 8 月 10 日 |
0.1.0 | 2022 年 3 月 28 日 |
#1406 in 文本处理
58KB
1K SLoC
Unicode 转换器
此仓库包含一个库和一个命令行工具,用于在多种 Unicode 编码之间转换数据。
支持的编码有
- UTF-8
- CESU-8
- UTF-16
- UTF-32
- UTF-1
命令行工具
该命令行工具旨在演示库的使用,但如有需要,也可以独立使用。它由一个文件 str/main.rs
组成。
用法
A tool to convert Unicode text files between multiple Unicode encodings. The available encodings are
UTF-8, UTF-1, CESU-8, UTF-16, and UTF-32. By default, the data is assumed to be little-endian, but for encodings
with multi-byte words such as UTF-16 or UTF-32, you can add the `_be` suffix to indicate that you
want to work with big-endian data
USAGE:
unicode_converter [OPTIONS] --input-file <INPUT_FILE> --decoding-input <DECODING_INPUT> --encoding-output <ENCODING_OUTPUT>
OPTIONS:
-d, --decoding-input <DECODING_INPUT>
Input file encoding
-e, --encoding-output <ENCODING_OUTPUT>
Output file encoding
-h, --help
Print help information
-i, --input-file <INPUT_FILE>
Input file used as input. You can use `-` if you mean `/dev/stdin`
-o, --output-file <OUTPUT_FILE>
Output file [default: /dev/stdout]
编译
要编译它,只需运行 cargo build
,因为这是此仓库中唯一的可执行 crate。
库
src/
目录中的所有代码(除 src/main.rs
外)构成了 Unicode 编码转换库。
行为
所有 Unicode 编码都使用实现 UnicodeEncoding
特质的自定义类型来创建。运行 cargo doc
将提供完整信息,但使用库的预期方式如下
- 从文件或字节数组切片中读取数据。例如,要从文件中读取 UTF-16 数据,请执行
let content = Utf16::from_file("filename.txt", false).unwrap();
。请注意使用false
表示编码为小端。 - 然后,将其转换为其他编码。例如,转换为UTF-8:
let converted = content.convert_to::<Utf8>();
。 - 最后,您可以把转换后的数据写入新文件。
converted.to_file("new_file.txt", false);
。由于UTF-8只占用一个字节,所以关于字节序的布尔参数被忽略。
依赖项
~3MB
~61K SLoC