getenv
用於訪問Mac OS X和Linux上的環境變量,它需要char*
作爲輸入。這是否意味着我不能在這些系統上的這些環境變量中存儲UNICODE字符串作爲值?getenv - Mac OS X和Linux上的環境變量
在Windows GetEnvironmentVariable
等中,返回可以容納UTF16字符串的寬字符串。
getenv
用於訪問Mac OS X和Linux上的環境變量,它需要char*
作爲輸入。這是否意味着我不能在這些系統上的這些環境變量中存儲UNICODE字符串作爲值?getenv - Mac OS X和Linux上的環境變量
在Windows GetEnvironmentVariable
等中,返回可以容納UTF16字符串的寬字符串。
當時,Unix系統並沒有在腦海中出現。所以不可能創建寬字符串環境變量或讀取它們。
對於Windows,C-Runtime wchar_t *_wgetenv(const wchar_t *varname);
作爲擴展,但這不會給你在Unix系統上太多的用處。
在當前的Linux(也可能是MacOSX)上,UTF-8編碼字符串非常常見。 (但也有例外,請參閱locale
命令等)。
由於Michael Burr評論,你可能會認爲getenv
正在返回一個UTF-8字符串。但是如果你想要最大的可移植性,只能在環境變量中使用ASCII。
從C或C++程序員的角度來看,getenv(3)返回char *
,您可能想要使用UTF-8相關函數來處理它。請注意0不會返回wchar_t*
指針。
見locale(7)手冊頁,並注意當前的區域可以通過環境變量,如LANG
,LC_ALL
定義,等...查看environ(7)。
或getenv返回的字符串的編碼是什麼? UTF8? – 2013-05-10 09:11:40
對於環境變量值,POSIX規範有這種說法:「可以分配環境變量的值不受限制,只是它們被認爲以空字節結尾,而且用於存儲環境的總空間和參數該進程僅限於{ARG_MAX}字節。「所以UTF8在某種意義上應該是可以的。但它也表示:「對於符合IEEE標準1003.1-2001的系統移植值,值應由便攜字符集中的字符組成(NUL除外,如下所示)」 – 2013-05-10 09:19:22
爲了確切的目的,你想要有一個UTF-8字符串的環境變量? – 2013-05-10 09:29:31