#unicode #convert #encoding #unicode-text #cli-tool #data #utf-16

bin+lib unicode_converter

一个库和命令行工具,用于在多种 Unicode 编码之间转换数据

3 个版本

0.1.2 2023 年 8 月 10 日
0.1.1 2023 年 8 月 10 日
0.1.0 2022 年 3 月 28 日

#1406 in 文本处理

BSD-3-Clause

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