2 releases
new 0.1.0 | Nov 16, 2024 |
---|---|
0.1.0-alpha.1 | Oct 7, 2024 |
#528 in Text processing
99 downloads per month
71KB
1.5K
SLoC
iconv-native-rs
A lightweight text encoding converter based on platform native APIs or libiconv.
Platforms
Windows
By default this crate uses MultiByteToWideChar
and WideCharToMultiByte
functions, controlled by feature win32
. Since UTF-32 is not supported by these functions, widestring
crate is used to convert UTF-32 to UTF-16 and vice versa.
You may also disable default features and enable libiconv
to use the libiconv library instead.
Linux
On Linux with glibc, the built-in iconv
is used by default, controlled by feature libc-iconv
. You may also disable default features and enable libiconv
to use the libiconv library instead.
Other libcs may not have an iconv
implementation that is compatible with glibc's (specifically the //IGNORE
and //TRANSLIT
extensions and proper BOM handling), hence libc-iconv
feature does not apply to them. By default, fallback-libiconv
feature applies and will link to the libiconv library. Make sure to have libiconv installed on user's system.
macOS
Same as Linux with glibc. You may also disable default features and enable libiconv
to use the libiconv library instead.
Web (WASM)
Uses TextDecoder
and TextEncoder
Web APIs. widestring
crate is used to handle UTF-16 and UTF-32 related conversions.
[!IMPORTANT] As per Encoding Standard, a standard-compliant browser supports only UTF-8 when using
TextEncoder
, hence conversions to any encodings other than UTF-8/UTF-16/UTF-32 (including LE/BE variants) are not supported and will result in anUnknownConversion
error. Consider import a polyfill and enablewasm-nonstandard-allow-legacy-encoding
feature if full encoding support is required, in which case most of the encodings will work. However, there is no guarantee as it is not a standard-compliant behavior.Conversions from legacy encodings are not affected by this limitation. See Encoding Standard for more details.
Other
On other platforms, the libiconv library is used by default, controlled by feature fallback-libiconv
.
Dependencies
~0–10MB
~102K SLoC