gpt4 book ai didi

c++ - Linux 宽字符串到多字节问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:00:54 53 4
gpt4 key购买 nike

我知道已经有人就这个主题提出了很多问题,但我在这里面临着一个非常不寻常的情况。

我在 Centos 工作。我的应用程序读取 wchar_t 中的一些数据并转换为多字节(UTF-8 编码),并填充 google proto 消息中的字符缓冲区并发送到另一个应用程序。

另一个应用程序再次将其转换为宽字符串并将其显示给用户。我正在使用 wcstombs 进行转换。我的区域设置是“en_US.UTF-8”。

对于某些字符串,它工作正常。我在一个特定的宽字符串(也许还有其他几个)中遇到问题,其中 wcstombs 返回 -1。错误号设置为 84(无效或不完整的多字节或宽字符)。

问题是,当我通过 eclipse 运行我的应用程序时,转换成功,但是当我的应用程序从根目录运行(作为服务)时,转换失败。

使用 Widechartomultibyte API 在 Windows 中相同的字符串转换成功。

我无法理解为什么会发生这种情况。

希望高手能帮帮我。

编辑

我的宽字符串是 L"\006£æ?Jÿ",当转换并显示给用户时,它变成图像 enter image description here

最佳答案

L"\006" 似乎不是有效的 unicode 字符串(无论是 UTF-16 还是 UTF-32)。我同意wcstombs,没有对应的UTF-8序列。

我怀疑您没有在 Windows 上使用WC_ERR_INVALID_CHARS。这会捕获相同的错误。

关于c++ - Linux 宽字符串到多字节问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31698635/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com