Crates.io | iconv-native |
lib.rs | iconv-native |
version | 0.1.0 |
source | src |
created_at | 2024-10-07 15:33:16.993655 |
updated_at | 2024-11-16 10:15:58.537757 |
description | A lightweight text encoding converter based on platform native API or libiconv |
homepage | |
repository | https://github.com/bdbai/iconv-native-rs |
max_upload_size | |
id | 1400187 |
size | 111,190 |
A lightweight text encoding converter based on platform native APIs or libiconv.
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.
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.
Same as Linux with glibc. You may also disable default features and enable libiconv
to use the libiconv library instead.
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.
On other platforms, the libiconv library is used by default, controlled by feature fallback-libiconv
.