我知道关于这个话题已经有很多问题了,但我在这里面临着一个非常不寻常的情况。
我在 Centos 工作。我的应用程序读取 wchar_t 中的一些数据并转换为多字节(UTF-8 编码)并在 google proto 消息中填充 char 缓冲区并发送到另一个应用程序。
另一个应用程序将其再次转换为宽字符串并将其显示给用户。我正在使用 wcstombs 进行转换。我的语言环境是“en_US.UTF-8”。
对于某些字符串,它工作正常。我在 wcstombs 返回-1的一个特定宽字符串(可能还有其他几个)中面临问题。错误号设置为 84(无效或不完整的多字节或宽字符)。
问题是,当我通过 eclipse 运行我的应用程序时,转换是成功的,但是当我的应用程序从 root(作为服务)运行时,转换失败。
使用widechartomultibyte API 在windows 中相同的字符串转换是成功的。
我无法理解为什么会这样。
希望高手能帮帮我。
编辑