字符串转换成ISO-8859-1

Convert String to ISO-8859-1

提问人:kirschkern 提问时间:3/1/2023 更新时间:3/1/2023 访问量:437

问:

在我的 JavaScript 应用中,我想给用户一个按钮,用于下载 UTF-8 或 ISO-8859-1(拉丁语)格式的数据。

到目前为止,我发现的唯一工作解决方案是使用 iconv-lite。

var iconv = require('iconv-lite');
iconv.encode(utf8String, 'iso-8859-1');

但是,库非常大,我很乐意有一个较小的解决方案。 您知道如何实现这一点或仅从 iconv-lite 获取相关部分吗?

这是我到目前为止尝试过的:

使用 TextEncoder

var utf8Array = new TextEncoder().encode(utf8String);
var iso88591String = new TextDecoder("iso-8859-1").decode(utf8Array);

结果,我仍然得到一个 UTF-8 字符串。

使用转义

decodeURIComponent(escape(utf8String));

引发错误“格式错误的 URI”

此处的 Lib Utf 表格:https://github.com/DesWurstes/utf.js

console.log(ToString(FromUTF8(utf8)));

返回二进制数据。

JavaScript UTF-8 国际标准化组织 ISO-8859-1

评论

0赞 deceze 3/1/2023
你到底希望得到什么作为输出?它必须是或以 64 为基数的编码字符串或类似字符串......?!ArrayBuffer
1赞 traktor 3/1/2023
IIRC,LATIN1 占据了 UTF16(JavaScript 使用的编码)的前 256 个码位。因此,如果文本仅包含代码点 <= 255,我会将其视为二进制字符串(8 位值)并尝试将其转换为 Blob 以供下载。将 utf-8 文本转换为 UTF16(JavaScript 字符串)取决于文本的来源。
0赞 kirschkern 3/7/2023
@deceze 我希望 ISO8859-1 格式的 String。
0赞 deceze 3/7/2023
这到底是什么意思?!Javascript 字符串始终采用 UTF-16 编码。你不能有一个 Latin-1 编码的 Javascript 字符串,因为那不是 Javascript 字符串。如果你想要 Latin-1 字节来表示一些文本,你需要它们以某种可以用 Javascript 表达的形式,这将是一个缓冲区或类似的东西。
0赞 kirschkern 3/7/2023
感谢@deceze的帮助。也许这个小提琴有助于理解: jsfiddle.net/7jsfce6v 但是,由于缺少对“require”的支持,我无法将其与 iconv-lite 支持一起使用。

答: 暂无答案