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
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 列表(当然不考虑界面友好性,可以给用户一个文本框输入。

函数 EnumSystemLocales,第一个参数是回调(callback)函数,第二个参数是枚举标志,这里我们应该使用 LCID_INSTALLED 枚举所有已安装 locale。
具体说明见:
EnumSystemLocales function
关于第一个参数回调函数,使用方法见:
EnumLocalesProc callback function
EnumSystemLocales每次调用会把 locale 标识符以字符串的形式传入,我们首先将它转换为数字形式。随后以 GetLocaleInfo 函数查询 locale 信息,使用 LOCALE_SENGCOUNTRY 和 LOCALE_SENGLANGUAGE 得到它的英文国家与语言名称,这里是 GetLocaleInfo 函数可以获取的信息列表:
Locale Information Constants
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28932059/viewspace-762693/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/28932059/viewspace-762693/