ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 获取Windows操作系统能够支持的locale

获取Windows操作系统能够支持的locale

原创 Linux操作系统 作者:quanzongliang 时间:2013-06-01 10:01:20 0 删除 编辑
PostgreSQL目前并不支持 GB2312,也不支持 GBK,唯一支持的中文字符集似乎只有
EUC_CN。所以我们在创建数据库时一般选择 Encoding 为 UTF-8,为了支持中文,在Linux下locale选择 zh_CN.utf8(Linux),在 Windows 下选择 Chinese_China 或者 Chinese_People's Republic of China。
阿弟(陈爱生)测试过速度问题,选择 C 会比选择中文快好几倍,他建议选C,处理中文时再convert,有时间我会着手调查一下有没有解决方案。

PG 对 locale 处理依赖于操作系统,对开源社区来说这是不错的解决办法,至少节省大量精力,但是也有弊端,比如字符排序在不同操作系统会有不同表现。初始化时,我们不得不选择当前操作系统能够支持的locale,如果是手动操作,对于 Windows 可以打开区域设置看看我们安装了哪些支持,对于 Linux 使用locale 命令即可。
如果制作安装程序,则必须给用户一个可用 locale 列表(当然不考虑界面友好性,可以给用户一个文本框输入。),下边讲讲如何使用 Windows API获取当前系统支持的 locale。

函数 EnumSystemLocales,第一个参数是回调(callback)函数,第二个参数是枚举标志,这里我们应该使用 LCID_INSTALLED 枚举所有已安装 locale。
具体说明见:
EnumSystemLocales function

关于第一个参数回调函数,使用方法见:
EnumLocalesProc callback function

EnumSystemLocales每次调用会把 locale 标识符以字符串的形式传入,我们首先将它转换为数字形式。随后以 GetLocaleInfo 函数查询 locale 信息,使用 LOCALE_SENGCOUNTRY 和 LOCALE_SENGLANGUAGE 得到它的英文国家与语言名称,这里是 GetLocaleInfo 函数可以获取的信息列表:
Locale Information Constants


来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28932059/viewspace-762693/ ,如需转载,请注明出处,否则将追究法律责任。

下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2013-05-28

  • 博文量
    3
  • 访问量
    11207