setlocale:
函数原形为:char *setlocale( int category, const char *locale );
头文件:<locale.h>
所支持的操作系统为:ANSI, Win 95, Win NT
对于简体中文可以使用如下设置:setlocale( LC_ALL, "chs" );

为什么一定要调用setlocale呢?
因为在C/C++语言标准中定义了其运行时的字符集环境为"C",也就是ASCII字符集的一个子集,那么mbstowcs在工作时会将cstr中所包含的字符串看作是ASCII编码的字符,而不认为是一个包含有chs编码的字符串,所以他会将每一个中文拆成2个ASCII编码进行转换,这样得到的结果就是会形成4个wchar_t的字符组成的串,那么如何才能够让mbstowcs正常工作呢?在调用mbstowcs进行转换之间必须明确的告诉mbstowcs目前cstr串中包含的是chs编码的字符串,通过setlocale( LC_ALL, "chs" )函数调用来完成,需要注意的是这个函数会改变整个应用程序的字符集编码方式,必须要通过重新调用setlocale( LC_ALL, "C" )函数来还原,这样就可以保证mbstowcs在转换时将cstr中的串看作是中文串,并且转换成为2个wchar_t字符,而不是4个。

本地化设置需要具备三个条件:
  1. a.语言代码(Language Code)
    b.国家代码(Country Code)
    c.编码(Encoding)
  • 本地名字可以用下面这些部分来构造:
    语言代码_国家代码.编码 比如(zh_CN.UTF-8, en_US等)
locale的别名表见/usr/lib/X11/locale/locale.alias(以Debian GNU/Linux为例)

setlocale语言字符串参考

Primary
language

Sublanguage

Language string
Chinese Chinese "chinese"
Chinese Chinese (simplified) "chinese-simplified" or "chs"
Chinese Chinese (traditional) "chinese-traditional" or "cht"
Czech Czech "csy" or "czech"
Danish Danish "dan" or "danish"
Dutch Dutch (default) "dutch" or "nld"
Dutch Dutch (Belgian) "belgian", "dutch-belgian", or "nlb"
English English (default) "english"
English English (Australian) "australian", "ena", or "english-aus"
English English (Canadian) "canadian", "enc", or "english-can"
English English (New Zealand) "english-nz" or "enz"
English English (United Kingdom) "eng", "english-uk", or "uk"
English English (United States) "american", "american english", "american-english", "english-american", "english-us", "english-usa", "enu", "us", or "usa"
Finnish Finnish "fin" or "finnish"
French French (default) "fra" or "french"
French French (Belgian) "frb" or "french-belgian"
French French (Canadian) "frc" or "french-canadian"
French French (Swiss) "french-swiss" or "frs"
German German (default) "deu" or "german"
German German (Austrian) "dea" or "german-austrian"
German German (Swiss) "des", "german-swiss", or "swiss"
Greek Greek "ell" or "greek"
Hungarian Hungarian "hun" or "hungarian"
Icelandic Icelandic "icelandic" or "isl"
Italian Italian (default) "ita" or "italian"
Italian Italian (Swiss) "italian-swiss" or "its"
Japanese Japanese "japanese" or "jpn"
Korean Korean "kor" or "korean"
Norwegian Norwegian (default) "norwegian"
Norwegian Norwegian (Bokmal) "nor" or "norwegian-bokmal"
Norwegian Norwegian (Nynorsk) "non" or "norwegian-nynorsk"
Polish Polish "plk" or "polish"
Portuguese Portuguese (default) "portuguese" or "ptg"
Portuguese Portuguese (Brazilian) "portuguese-brazil" or "ptb"
Russian Russian (default) "rus" or "russian"
Slovak Slovak "sky" or "slovak"
Spanish Spanish (default) "esp" or "spanish"
Spanish Spanish (Mexican) "esm" or "spanish-mexican"
Spanish Spanish (Modern) "esn" or "spanish-modern"
Swedish Swedish "sve" or "swedish"
Turkish Turkish "trk" or "turkish"

setlocale国家字符串参考

Country/Region Country/Region string
Australia "aus" or "australia"
Austria "aut" or "austria"
Belgium "bel" or "belgium"
Brazil "bra" or "brazil"
Canada "can" or "canada"
China "china", "chn", "pr china", or "pr-china"
Czech Republic "cze" or "czech"
Denmark "dnk" or "denmark"
Finland "fin" or "finland"
France "fra" or "france"
Germany "deu" or "germany"
Greece "grc" or "greece"
Hong Kong SAR "hkg", "hong kong", or "hong-kong"
Hungary "hun" or "hungary"
Iceland "iceland" or "isl"
Ireland "irl" or "ireland"
Italy "ita" or "italy"
Japan "jpn" or "japan"
Korea "kor" or "korea"
Mexico "mex" or "mexico"
The Netherlands "nld", "holland", or "netherlands"
New Zealand "nzl", "new zealand", "new-zealand", or "nz"
Norway "nor" or "norway"
Poland "pol" or "poland"
Portugal "prt" or "portugal"
Russia "rus" or "russia"
Singapore "sgp" or "singapore"
Slovakia "svk" or "slovak"
Spain "esp" or "spain"
Sweden "swe" or "sweden"
Switzerland "che" or "switzerland"
Taiwan "twn" or "taiwan"
Turkey "tur" or "turkey"
United Kingdom "gbr", "britain", "england", "great britain", "uk", "united kingdom", or "united-kingdom"
United States "usa", "america", "united states", "united-states", or "us"

Win32 API之Setlocale函数配置地域化信息函数相关推荐

  1. 调用Win32 API 之CreateCursor函数失败

    Win SDK文档,函数说明如下, CreateCursor CreateCursor该函数创建一个指定大小.位模式和热点的光标. 函数原型:HCURSOR CreateCursor(HINSTANC ...

  2. 【Win32 API】GetPixel函数返回的颜色值不正确

    可能的原因 如果显示器分辨率(每英寸的像素数)过高,Windows会拉伸图形,即所谓DPI缩放,导致应用程序GetPixel取到的点跟鼠标箭头不一致.(详细描述见参考链接) 解决方法 在进入WinMa ...

  3. WIN32 API:绘图函数

    二.创建GDI绘图对象 今天我们要讨论的是Win32 API中最有有趣的部分───用绘图函数完成图形输出.可以说,所有前面讲的内容都是本课程的前期准备.当时,我们在一些试例程序中偶尔用了一些绘图函数, ...

  4. c#调用win32 API函数修改系统时间

    一般来说,系统时间的修改可以通过win32 API函数库中的SetLocalTime函数进行设置.对于C#语言来说,虽然win32 API大部分函数都已经封装在了.NET Framework类库中,但 ...

  5. Win32 API 概论

    1.1为什么使用 Win32 API 在Windows程序设计领域处于发展初期时,Windows程序员可使用的编程工具唯有API函数.这些函数在程序员手中犹如"积木块"一样,可搭建 ...

  6. Win32 API概论

    1.1为什么使用 Win32 API 在Windows程序设计领域处于发展初期时,Windows程序员可使用的编程工具唯有API函数.这些函数在程序员手中犹如"积木块"一样,可搭建 ...

  7. win32 API函数大全

    [1]. API之网络函数  WNetAddConnection :创建同一个网络资源的永久性连接  WNetAddConnection2 :创建同一个网络资源的连接  WNetAddConnecti ...

  8. Win32 Api函数

    1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接  WNetAddConnection2 创建同一个网络资源的连接  WNetAddConnection3 创 ...

  9. Win32 API、VC++、C# 文件操作函数的初步比较

    一 C# File.ReadAllText(FilePath) : 一次将文本内容全部读完, File.ReadAllLines: 该方法返回一个字符串数组.每一行都是一个数组元素. string[] ...

最新文章

  1. hibernate中的hql查询语句list查询所有与iterate查询所有的区别
  2. android中volley通信框架简介
  3. Python 骚操作!如何让自己在斗图中立于不败之地?
  4. 为什么(12)式,km不能直接相乘?而要让域k先乘一个代数A里面的单位元,再作用在群M上呢?...
  5. 与时间赛跑:微盟的数据恢复为什么需要这么长时间
  6. 微信小程序为什么会成为了实体店“上线”的最优选择?
  7. C++ 以智能指针管理内存资源
  8. 多元回归分析python实战-----对我国财政收入的多因素进行分析
  9. 一款支持vue3 的颜色选择器
  10. Python--图片转字符画
  11. android别踩白块设计,别踩白块儿实例——按键精灵手机助手
  12. unity 烘焙模式——baked indirect/shadow mask/distance shadowmask/subtractive模式的区别
  13. 案例剖析:关于优化外贸网店提高支付率
  14. 关闭公司电脑的强制屏幕保护
  15. PHP请求示例API接口,商品详情数据的获取
  16. 内蒙古对口升学2018年计算机,2018年届对口升学考试计算机专业月考三试题.doc
  17. 新手做独立站需要掌握哪些技能
  18. 看未来的企业是如何解决潜规则的
  19. 电子邮箱哪家最安全,各家电子邮箱安全性盘点!
  20. 2021 Java 这一年

热门文章

  1. 动漫人物VS编程语言
  2. sql server 内存初探
  3. java 笔记(3)多态 容易理解
  4. lodash(一)数组
  5. XMLHttpRequest Post参数
  6. iOS 9: UIStackView入门
  7. 如何使用Openssl 制作CA证书
  8. 修改及查看mysql数据库的字符集
  9. HTML 資訊汲取(中篇) - Default namespace 問題
  10. 增大apache 2的最大连接数