2

getenv 用于访问 Mac OS X 和 Linux 上的环境变量,它char*作为输入。这是否意味着我不能将 UNICODE 字符串作为值存储在这些系统上的这些环境变量中?

在 WindowsGetEnvironmentVariable等上,返回可以容纳 UTF16 字符串的宽字符串。

4

2 回答 2

0

在当前的 Linux(可能还有 MacOSX)上,UTF-8编码的字符串非常常见。(但也有例外,请参阅locale命令等...)。

正如Michael Burr评论的那样,您可以假设它getenv返回一个 UTF-8 字符串。但是,如果您想要最大的可移植性,请仅在环境变量中使用 ASCII。

从 C 或 C++ 程序员的角度来看,getenv(3)返回 a char *,您可能希望使用 UTF-8 相关函数来处理它。请注意,getenv它不返回wchar_t*指针。

请参阅locale(7)手册页并注意当前语言环境可以由环境变量定义,如LANG,LC_ALL等...请参阅environ(7)

于 2013-05-10T09:37:35.027 回答
0

那时,Unix 系统的发明并没有考虑到宽字符串。所以不可能创建宽字符串环境变量或读取它们。
对于 Windows,有 C-Runtime 的扩展wchar_t *_wgetenv( const wchar_t *varname );,但这在 Unix 系统上不会给你太多用处。

于 2013-05-10T09:14:51.507 回答