【问题标题】:C++ setlocale() returns "NULL"C++ setlocale() 返回“NULL”
【发布时间】:2019-07-22 14:04:14
【问题描述】:

我尝试在基于alpine:3.8 并安装了locale 的docker 容器中运行我的程序。我可以正确获得语言环境结果,但在我的程序中,我使用 setlocale() 函数来读取和转换一些 unicode,但得到了 NULL 结果。奇怪的是该程序在本地服务器(CentOS)上运行良好。

我通过这个在 alpine 中安装了语言环境

https://github.com/rilian-la-te/musl-locales 

效果很好,我得到了正确的 locale/locale -a /locale -m 结果。

代码如下:

fprintf(stderr, "setlocale: \"%s\"\n", setlocale(LC_CTYPE, "zh_CN.UTF-8"));                       
setlocale(LC_ALL, "zh_CN.UTF-8"); 

我期待zh_CN.UTF-8的输出

【问题讨论】:

    标签: docker setlocale


    【解决方案1】:

    使用locale -a 检查系统上可用的语言环境。 您应该只在系统上使用受支持的 UTF-8 语言环境。我假设在这种情况下,您可能需要将“zh_CN.UTF-8”更改为“C.UTF-8”以获得更好的可移植性(“C.UTF-8”是符合 POSIX 标准的默认语言环境)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-07
      • 1970-01-01
      • 2014-04-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多