问题标签 [libiconv]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
254 浏览

c - iconv - 保留无法转换为 ascii 的字符

我正在使用 iconv 的音译函数将 unicode 字符串转换为最接近的 ASCII 等价物。但是,该字符串包含一些没有 ASCII 等效符号的符号。我想保留这些符号而不丢弃它们。

目前,这就是我正在做的事情:

如何配置 iconv 以产生如下输出:

如果 iconv 无法做到这一点,是否有办法以编程方式实现这一目标?

0 投票
1 回答
3133 浏览

homebrew - 拒绝链接 macOS 提供的软件:libiconv

为了按照此处发布的步骤使 nokogiri 正常工作,我似乎无法正确链接 iconv。

当我运行命令时

我收到以下错误:

我已将上述路径添加到我的 bash 配置文件中,重新加载终端,重新启动终端,甚至尝试重新启动计算机,但错误仍然存​​在。我也尝试过重新安装 libiconv 但无济于事(见下面的输出)。

0 投票
1 回答
342 浏览

c++ - How to use libiconv correctly in C so that it would not report "Arg list too long"?

Code

I use strerror(errno) to get the error message,it says "Arg list too long".
How can I solve it? Thanks to the comments,I change the code above.
I just use the function to read a text file.I think it reports the error because the file is too large.So I want to know how to use iconv for long string.

0 投票
0 回答
371 浏览

homebrew - 在 Ubuntu 20.04.1 中使用 Homebrew 安装 LibIconv

我在 Windows 10 的 Hyper-V 上运行 Ubuntu 20.04.1,我需要安装 LibIconv(为了通过 Homebrew 包安装 ClamAV)。

当我跑步brew install clamavbrew install libiconv得到这个时:

到目前为止,我已确保我拥有此处列出的 ClamAV 的所有其他依赖项。但是,我在安装 LibIconv 时遇到问题。我也尝试使用这些说明,但我认为我没有成功,因为我仍然收到上面的错误。我对命令行很陌生,所以我很感激任何帮助。

0 投票
1 回答
127 浏览

rpm - 无法在 AIX 上 rpm 卸载软件包

它似乎是一个依赖循环......

gettext-0.19.8.1-1 依赖于 libiconv-1.15-1 而 libiconv-1.15-1 依赖于 gettext-0.19.8.1-1?

0 投票
1 回答
25 浏览

android - 我正在尝试让一个在旧版 Android 手机上运行的应用程序在 Galaxy S20 FE 5G 上运行。来自 adb logcat 的日志说“libiconv.so”未找到

我解压了 .apk 文件,文件 libiconv.so 位于正确的文件夹“/lib/aarch64/”中。

日志显示该文件“未找到”。

这是日志的相关部分

0 投票
2 回答
87 浏览

c - libiconv:在 UTF-8/UTF-16/UTF-32 之间转换时安全估计目标字节长度?

有大量关于 Unicode 代码单元、代码点等的信息,但我仍然对使用字节流(libiconv要求)转换组合字符、字素等有点模糊。

目前我只对使用 libconv's 在 UTF-8/UTF-16/UTF-32 之间转换感兴趣iconv(),它期望源缓冲区和目标缓冲区的字节长度作为参数。

问题:是否有一种安全的方法可以根据源缓冲区的已知字节长度快速计算目标缓冲区的最大可能字节长度?

比方说,例如,从已知转换u16buf为(不包括 0x0000-termination,如果有的话)。在最坏的情况下,UTF-16 源缓冲区中每个代码点将有 1 个两字节单元,对应于 UTF-8 目标缓冲区中每个代码点有 4 个单字节单元。这足以安全地假设 UTF-8 目标缓冲区永远不会长于吗?u8bufu16byteslen2 * u16lenbytes

我实际上已经对此进行了试验并且似乎可以工作,但是我不确定我是否缺少涉及组合字符和字素簇的极端案例。我的怀疑来自于我对这些东西如何在这 3 种不同的编码之间进行转换的无知。我的意思是,一个字形是否可能需要说 3 个 UTF-16 代码点,但在转换时需要 10 个 UTF-8 代码点?

在那种情况下,翻倍u16lenbytes是不够的,对吧?如果是这样,是否有任何其他直接的方法来预先计算目标缓冲区的最大长度?

0 投票
1 回答
47 浏览

visual-studio - 依赖 gnulib 时,GNU 库是否能够使用 autoconf 构建系统链接到动态 MSVC 运行时?

我的目标是了解 GNU 库 autoconf 构建系统。我知道 libiconv 可以使用精心制作的 MS Visual Studio 项目和手动添加的源代码文件成功构建。所以这个问题更多的是学术而不是实际。我考虑到 gnulib 也没有 Windows 平台的官方支持。

按照 INSTALL.windows 构建 libiconv 的指南,当构建 iconv 与动态 MSVC 运行时(cl /MD 或 cl /MDd)时,我面临下一个编译错误。

配置调用:

编译器调用:

配置生成的iconv/srclib/string.h

WinSDK/include/ucrt/corecrt_malloc.h

WinSDK/include/ucrt/corecrt.h 定义下一个

经过研究和调查,我发现 gnulib(作为 libiconv 的 GNU autoconf 构建系统的一部分)用自己的实现替换了不令人满意的函数调用。rpl_free 是从 C 运行时替换常规 free() 函数的替代名称,因为 MSVC 自由函数不被识别为 POSIX 兼容。在我看来,没有选项可以告诉配置不要替换吸吮功能。使用环境变量 REPLACE_FREE=0 破解成功了,我关闭了函数替换。

但是,MSVC 编译器仍然抱怨不同的链接。我相信,当 gnulib 声明其 free() 函数签名且没有额外属性时,MSVC 运行时会为消费者导出其 API 函数和 __declspec(dllimport)。

我想知道,是否有一条“铺平道路”来使用原始 autoconf 系统构建链接到动态 MSVC 运行时的 libiconv(或其他利用 gnulib 的 GNU 库)?我可以在不更改 gnulib m4 文件的情况下实现这一目标吗?