Man page - setlocale(3)

Packages contains this manual

Available languages:

en fr ja ru zh_TW zh_CN

Manual

SETLOCALE

NAME
總 覽 (SYNOPSIS)
描 述 (DESCRIPTION)
返 回 值 (RETURN VALUE)
遵 循 (CONFORMING TO)
注 意 (NOTES)
參 見 (SEE ALSO)
[中 文 版 維 護 人 ]
[中 文 版 最 新 更 新 ]
[中 國 Linux論 壇 man手 冊 頁 翻 譯 計 劃 ]


NAME

setlocale - 設 定 當 前 的 區 域 選 項

總 覽 (SYNOPSIS)

#include <locale.h>

char *setlocale(int category , const char * locale );

描 述 (DESCRIPTION)

setlocale() 函 式 用 來 設 定 或 者 查 詢 程 式 當 前 的 區 域 選 項 .

如 果 locale 不 是 NULL , 程 式 就 會 根 據 引 數 更 改 相 應 的 區 域 選 項 . category 引 數 指 定 區 域 選 項 的 哪 一 部 分 需 要 更 改 .

LC_ALL

代 表 所 有 部 分 .

LC_COLLATE

代 表 正 則 表 示 式 匹 配 (和 範 圍 表 示 式 [range expressions] 以 及 字 元 類 [classes] 有 關 係 ) 和 字 串 排 序 .

LC_CTYPE

代 表 正 則 表 示 式 匹 配 , 字 元 類 (character classification), 轉 換 , 區 分 大 小 寫 的 比 較 , 以 及 寬 字 元 函 式 .

LC_MESSAGES

代 表 可 以 本 地 化 的 訊 息 (自 然 語 言 ).

LC_MONETARY

代 表 貨 幣 格 式 .

LC_NUMERIC

代 表 數 字 格 式 (比 如 小 數 點 和 千 位 分 組 符 ).

LC_TIME

代 表 時 間 和 日 期 格 式 .

locale 引 數 是 一 個 指 向 字 串 的 指 標 . 此 字 串 為 category 需 要 的 設 定 . 此 字 串 可 以 是 一 個 眾 所 周 知 的 區 域 選 項 常 量 , 如 "C" 或 "da_DK" (見 下 ), 也 可 以 是 另 外 一 個 setlocale 呼 叫 返 回 的 字 串 .

如 果 locale "" , 需 要 更 改 的 部 分 會 根 據 環 境 變 數 做 相 應 的 設 定 . 具 體 的 和 實 現 有 關 . 對 於 glibc 來 說 , 首 先 檢 視 環 境 變 數 LC_ALL (不 管 category ), 然 後 檢 視 category (LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) 同 名 的 環 境 變 數 , 最 後 檢 視 環 境 變 數 LANG. 以 先 查 到 的 環 境 變 數 為 準 . 如 果 其 值 不 是 一 個 有 效 的 區 域 選 項 , 區 域 選 項 將 不 會 改 變 , setlocale 會 返 回 NULL.

標 準 區 域 選 項 "C" "POSIX" 是 可 移 植 的 ; 它 的 LC_CTYPE 部 分 對 應 的 是 7 位 的 ASCII 字 元 集 .

一 個 典 型 的 區 域 選 項 有 如 下 的 格 式 : language [_ territory ][. codeset ][@ modifier ], 其 中 language 是 一 個 ISO 639 語 言 程 式 碼 , territory 是 一 個 ISO 3166 國 家 程 式 碼 , codeset 是 一 個 象 ISO-8859-1 或 者 UTF-8 的 字 元 集 或 者 編 碼 識 別 符 號 . 用 "locale -a", cf. locale (1) 可 以 獲 得 一 個 系 統 支 援 的 區 域 選 項 的 列 表 .

如 果 locale NULL , 意 味 著 只 是 查 詢 當 前 的 區 域 選 項 而 不 更 改 它 .

當 main 程 式 開 始 的 時 候 可 移 植 的 "C" 區 域 選 項 作 為 預 設 值 被 設 定 . 一 個 程 式 可 以 在 初 始 化 之 後 呼 叫 setlocale(LC_ALL, "" ) 函 式 , 並 且 從 localeconv() 呼 叫 的 返 回 中 獲 得 和 區 域 選 項 相 關 的 資 訊 , 如 果 MB_CUR_MAX > 1 就 用 多 位 元 組 和 寬 位 元 組 函 式 來 處 理 文 字 , 用 strcoll() , wcscoll() 或 者 strxfrm() , wcsxfrm() 來 比 較 字 串 , 這 樣 就 可 以 使 程 式 有 較 好 的 移 植 性 .

返 回 值 (RETURN VALUE)

一 個 成 功 的 setlocale() 呼 叫 會 返 回 一 個 表 示 當 前 區 域 選 項 的 字 串 (指 標 ). 這 個 字 串 可 能 是 在 靜 態 儲 存 區 中 分 配 的 . 之 後 用 相 應 的 category 和 這 個 字 串 作 為 引 數 再 去 呼 叫 這 個 函 式 會 重 新 把 程 式 區 域 選 項 的 相 應 部 分 恢 復 . 如 果 請 求 不 能 完 成 將 會 返 回 NULL .

遵 循 (CONFORMING TO)

ANSI C, POSIX.1

注 意 (NOTES)

Linux (也 就 是 , GNU libc) 支 援 可 移 植 的 "C" "POSIX" 區 域 選 項 . 在 以 前 它 曾 經 支 援 歐 洲 Latin-1 區 域 選 項 "ISO-8859-1" (比 如 說 在 libc-4.5.21 和 libc-4.6.27 中 ), 和 俄 羅 斯 的 "KOI-8" (更 準 確 點 是 , "koi-8r") 區 域 選 項 (比 如 在 libc-4.6.27 中 ), 所 以 設 定 一 個 環 境 變 數 LC_CTYPE=ISO-8859-1 就 能 夠 讓 isprint() 返 回 正 確 的 結 果 . 現 在 不 講 英 語 的 歐 洲 人 會 比 以 前 更 麻 煩 一 些 , 他 們 需 要 安 裝 相 應 的 區 域 選 項 檔 案 .

參 見 (SEE ALSO)

locale (1), localedef (1), strcoll (3), isalpha (3), localeconv (3), strftime (3), charsets (4), locale (7)

[中 文 版 維 護 人 ]

唐 友 <tony_ty@263.net>

[中 文 版 最 新 更 新 ]

2001/12/2

[中 國 Linux論 壇 man手 冊 頁 翻 譯 計 劃 ]

http://cmpp.linuxforum.net

本 頁 面 中 文 版 由 中 文 man 手 冊 頁 計 劃 提 供 。
中 文 man 手 冊 頁 計 劃 : https://github.com/man-pages-zh/manpages-zh