getenv
用于访问Mac OS X和Linux上的环境变量,需要char*
作为输入。这是否意味着我不能将UNICODE字符串存储为这些系统上的这些环境变量中的值?
在Windows GetEnvironmentVariable
等处,返回可容纳UTF16字符串的宽字符串。
答案 0 :(得分:0)
当时,Unix系统并没有考虑到宽带的发明。因此,不可能创建宽字符串环境变量或读取它们
对于Windows,有一个C-Runtime wchar_t *_wgetenv( const wchar_t *varname );
的扩展,但这不会给你在Unix系统上的大量使用。
答案 1 :(得分:0)
在当前的Linux(可能还有MacOSX)上,UTF-8编码的字符串非常常见。 (但也有例外情况,请参阅locale
命令等...)。
如Michael Burr所述,您可以假设getenv
返回UTF-8字符串。但是如果你想要最大的可移植性,只在环境变量中使用ASCII。
从C或C ++程序员的角度来看,getenv(3)返回char *
,您可能希望使用与UTF-8相关的函数来处理它。请注意,getenv
不会返回wchar_t*
指针。
请参阅locale(7)手册页,注意当前区域设置可以由LANG
,LC_ALL
等环境变量定义...请参阅environ(7)。