• PostgreSQL initdb报错:先是:initdb: invalid locale name "zh_CN.UTF-8" 然后是: initdb: invalid locale settings; check LANG and LC_* environment variables


    在安装PostgreSQL时, initdb报错:

    先是:initdb: invalid locale name "zh_CN.UTF-8" 

    然后是: initdb: invalid locale settings; check LANG and LC_* environment variables

    背景:

    服务器系统为CentOS8,目前客户环境中只有en_US.UTF-8字符集。

    问题记录:

    一、报错:initdb: invalid locale name "zh_CN.UTF-8" 

    1)原因是在initdb时指定了编码为字符集为zn_CN.UTF-8,而系统没有这个编码导致的。

    2)修改为:

    initdb xxxx -E UTF-8 

    不指定具体的编码集,默认就使用了本地的en_US.UTF-8编码,初始化成功。

    二、报错:initdb: invalid locale settings; check LANG and LC_* environment variables

    但是客户要求用zh_CN.UTF-8编码,就需要重新初始化:

    1)修改系统编码:

    vim /etc/locale.conf 

    LANG=zh_CN.utf8 

    source /etc/locale.conf 

    2)查看系统编码:

    env

    LANG改过来了

    3)再次初始化,此时报错:

    initdb: invalid locale settings; check LANG and LC_* environment variables

    4)查看系统是包含zh_CN.UTF-8字符集:

    locale -a|grep zh

    --发现没有

    locale 

    除了LANG是zh_CN.UTF-8,其他都是en_US.UTF-8

    5)安装中文字符集

    yum install glibc-common 

    yum install -y langpacks-zh_CN 

    source /etc/locale.conf 

    locale -a|grep zh

    --有中文字符集了

    6)查看字符集

    locale

    都是中文的了

    7)重新初始数据库目录,成功,数据库编码为zh_CN.UTF-8

    三、en_US.UTF-8 和 zh_CN.UTF-8 字符集区别:

    en_US.UTF-8 和 zh_CN.UTF-8 包含的字符数量是基本上一样的,大概是七万个汉字,编码都是 UTF-8 编码,字符集是 Unicode,版本是 4.1 吧?zh_CN.GB18030 和 zh_CN.GBK 的字符集都与 Unicode 3 是等价的,记得应该是这样
    语言环境的差别就是另一回事了,中国人和外国人表示时间啦,数字啦,习惯都不一样,所以必须区分开。大部分程序根据语言环境变量来选择界面的语言是中文还是英文。

    所以一般linux系统的语言环境设置成:export LANG=zh_CN.UTF-8,代表中国人使用的unicode字符集

  • 相关阅读:
    性能测试相关
    centos7 设置定时器 crond
    大杀器Bitset
    树形DP
    双线程DP
    状态压缩DP
    斜率优化DP
    01分数规划
    二分和三分
    uva11549 Floyd判圈法
  • 原文地址:https://www.cnblogs.com/kuang17/p/13164266.html
Copyright © 2020-2023  润新知