#include

char*setlocale(intcategory,constchar* locale);

说明:

category:为locale分类,表达一种locale的领域方面,通常有下面这些预定义常量:LC_ALL、LC_COLLATE、LC_CTYPE、LC_MESSAGES、LC_MONETARY、LC_NUMERIC、LC_TIME,其中 LC_ALL 表示所有其它locale分类的并集。

locale:为期望设定的locale名称字符串,在Linux/Unix环境下,通常以下面格式表示locale名称:language[_territory][.codeset][@modifier],language 为 ISO 639 中规定的语言代码,territory 为 ISO 3166 中规定的国家/地区代码,codeset 为字符集名称。

当 locale 为 NULL 时,函数只做取回当前 locale 操作,通过返回值传出,并不改变当前 locale。

当 locale 为 "" 时,根据环境的设置来设定 locale,检测顺序是:环境变量 LC_ALL,每个单独的locale分类LC_*,最后是 LANG 变量。为了使程序可以根据环境来改变活动 locale,一般都在程序的初始化阶段加入下面代码:setlocale(LC_ALL, "")。

当C语言程序初始化时(刚进入到 main() 时),locale 被初始化为默认的 C locale,其采用的字符编码是所有本地 ANSI 字符集编码的公共部分,是用来书写C语言源程序的最小字符集(所以才起locale名叫:C)。

当用 setlocale() 设置活动 locale 时,如果成功,会返回当前活动 locale 的全名称;如果失败,会返回 NULL。

setlocale()的作用和使用例子

当向终端、控制台输出 wchar_t 类型的字符时,需要设置 setlocale(),因为通常终端、控制台环境自身是不支持 UCS 系列的字符集编码的,使用流操作函数时(如:printf()),在标准/RT库实现的内部会将 UCS 字符转换成合适的本地 ANSI 编码字符,转换的依据就是 setlocale() 设定的活动 locale,最后将结果字符序列传递给终端,对于来自终端的输入流这个过程刚好相反。

可以用重定向输出流到文件的方法验证上面的机制:无论是 Windows CRT、Linux glibc、Cygwin glibc,使用 wprintf() 打印 wchar_t 字符文本时,重定向到文件的内容总是 GBK、UTF-8 等本地 ANSI 编码,而不会是 UCS 编码。

提示:UCS实际实现是utf-8,utf-16,utf-32

转自:https://blog.csdn.net/chenjiayi_yun/article/details/10091563

调用setlocale原因:

在C/C++语言标准中定义了其运行时的字符集环境为"C",是ASCII字符集的一个子集,mbstowcs在工作时会将cstr中所包含的字符串看作是ASCII编码的字符,而不认为是一个包含有chs编码的字符串,所以会将每一个中文拆成2个ASCII编码进行转换,结果是会形成4个wchar_t的字符组成的串。

通过调用setlocale( LC_ALL, "chs" )函数,告诉mbstowcs目前cstr串中包含的是chs编码的字符串.

这个函数会改变整个应用程序的字符集编码方式,需要调用setlocale( LC_ALL, "C" )函数来还原。

c语言setlocale函数,setlocale函数相关推荐

  1. c语言中常用函数头文件,c语言中常用的函数和头文件

    头文件ctype.h 函数列表 函数类别函数目的详细说明 字符测试为字符和数字的isalnum 是否为isalpha字符 是否控制字符iscntrl 是否为数字isdigit 是否能够显示文字(空格除 ...

  2. c语言计算字符串的函数是什么,字符函数

    字符函数(character function)是处理字符型数据的函数,其自变量或函数值中至少有一个是字符型数据. 中文名 字符函数 外文名 character function 应用领域 计算机等涉 ...

  3. R语言使用download.file函数下载网络文件到本地(Download File from the Internet)

    R语言使用download.file函数下载网络文件到本地(Download File from the Internet) 目录 R语言使用download.file函数下载网络文件到本地(Down ...

  4. R语言使用trimws函数:trimws函数去除(删除、remove)字符串头尾的空格

    R语言使用trimws函数:trimws函数去除(删除.remove)字符串头尾的空格 目录 R语言使用trimws函数:trimws函数去除(删除.remove)字符串头尾的空格

  5. R语言stringr包str_dup函数字符串多次复制实战

    R语言stringr包str_dup函数字符串多次复制实战 目录 R语言stringr包str_dup函数字符串多次复制实战 #导入stringr包 #仿真数据

  6. R语言使用integrate函数进行函数积分计算实战

    R语言使用integrate函数进行函数积分计算实战 目录 R语言使用integrate函数进行函数积分计算实战 #自定义函数 #积分操作

  7. R语言stringr包str_count函数计算字符串匹配个数实战

    R语言stringr包str_count函数计算字符串匹配个数实战 目录 R语言stringr包str_count函数计算字符串匹配个数实战 #导入stringr包 #仿真数据

  8. R语言使用R原生函数plot和lines可视化线图、并使用lty参数自定义线条类型、lwd自定义设置线条的粗细、col参数自定义线条颜色(Change R base plot line types)

    R语言使用R原生函数plot和lines可视化线图.并使用lty参数自定义线条类型.lwd自定义设置线条的粗细.col参数自定义线条颜色(Change R base plot line types) ...

  9. R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色、添加抖动数据点jitter、误差条)并在X轴标签下方添加分组对应的统计值(样本数N、中位数、四分位数的间距iqr)

    R语言ggpubr包ggsummarystats函数可视化分组条形图(自定义分组颜色.添加抖动数据点jitter.误差条error bar)并在X轴标签下方添加分组对应的统计值(样本数N.中位数med ...

  10. R语言使用t.test函数计算两组独立数据的t检验(Independent t-test)

    R语言使用t.test函数计算两组独立数据的t检验(Independent t-test) 目录 R语言使用t.test函数计算两组独立数据的t检验(Independent t-test) #仿真数据

最新文章

  1. KVell 单机k/v引擎:用最少的CPU 来调度Nvme的极致性能
  2. JAVA单线程以及java多线程的实现方式
  3. maven创建多模块项目
  4. Python实现跨文件全局变量的方法
  5. 梦世界服务器修改指令,我的世界梦世界有哪些指令必须知道 梦世界所有必须知道指令汇总...
  6. 《C#高级编程》笔记系列第三弹
  7. 02函数-03-闭包
  8. JavaScript计时器函数用法
  9. 5、UmbracoNewsSite:添加css和js文件
  10. C# 禁止控件重绘(绘制)
  11. 聊聊Eureka Server的REST API
  12. [转载]C# Socket编程 同步以及异步通信
  13. 无线安全之破解WPA/WPA2 加密WiFi
  14. FFT算法的C语言实现
  15. 关于小米路由器设置无线中继失败的问题
  16. 我从实习到现在的经历,幸运女神总会来到!
  17. 求星期算法c语言程序,C语言根据指定日期计算是星期几
  18. Python实现GWO智能灰狼优化算法优化支持向量机分类模型(SVC算法)项目实战
  19. macos可以升级到指定版本吗_MacOS升级10.13后变垃圾,教你如何降级自救
  20. 【中科大软院】还香不香?20软院考研四千字复盘

热门文章

  1. 【统计学】利用spss正态分布假定检验 S-W检验 K-S检验 直方图 Q-Q图
  2. UWP的一种下拉刷新实现
  3. 如何用 Python 快速开发一个网站
  4. 第九节 html特殊文字符号
  5. 自学是一门手艺_错误报告是一门科学
  6. Gensim库的使用——Doc2Vec模型(一)介绍与使用
  7. 三维模型格式转换神器-assimp
  8. 用excel打开txt文件
  9. FTRL之FM和LR实战(使用稀疏数据进行实战)
  10. 一个开源在线IDE项目