【问题标题】:UTF-8 to C/POSIX locale conversion using iconv() fails使用 iconv() 的 UTF-8 到 C/POSIX 语言环境转换失败
【发布时间】:2023-04-03 10:35:01
【问题描述】:

我正在尝试将 UTF-8 字符串转换为 C/POSIX 语言环境字符串
UTF-8 字符串为“abc123£”(在 bash 中为“abc123\302\243”`)

  1. iconv_open("", "UTF-8"); // "" 表示默认程序语言环境,即 C
  2. iconv_open("UCS-2LE", "UTF-8");

iconv() 在案例 1 中返回 EILSEQ,但在案例 2 中成功。

这是什么原因?
另外,我怎样才能成功地将任何 UTF-8 字符串转换为“C”语言环境字符串。

【问题讨论】:

    标签: c linux utf-8 character-encoding


    【解决方案1】:

    因为您的C 语言环境使用的字符集(可能是US-ASCII)没有£ 的字符,并且字符串不能 被无损地转换。

    【讨论】:

    • .. 第二次调用仅成功,因为您的输入字符串恰好包含 16 字节的 UC 字符(但它会在 32 位字符上失败)。
    猜你喜欢
    • 2011-05-07
    • 2011-07-25
    • 2011-09-04
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 2019-01-15
    • 2017-04-19
    • 2017-08-30
    相关资源
    最近更新 更多