简述PostgreSQL字符集的几种形式

前端之家收集整理的这篇文章主要介绍了简述PostgreSQL字符集的几种形式前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

简述Postgresql字符集的几种形式

http://database.51cto.com 2010-10-15 09:26 大肚熊 博客我要评论(0)
Postgresql数据库支持多种字符集,在配置字符集时要分清楚服务器与客户端的字符集,字符集不一致尽管有时能够发生转换,但带来的问题也很头疼。语言环境的配置也很重要。
服务器字符集<来自文档>:
      1. NameDescriptionLanguageServer?Bytes/CharAliases
      1. BIG5BigFiveTraditionalChineseNo1-2WIN950,Windows950
      1. EUC_CNExtendedUNIXCode-CNSimplifiedChineseYes1-3
      1. EUC_JPExtendedUNIXCode-JPJapaneseYes1-3
      1. EUC_JIS_2004ExtendedUNIXCode-JP,JISX0213JapaneseYes1-3
      1. EUC_KRExtendedUNIXCode-KRKoreanYes1-3
      1. EUC_TWExtendedUNIXCode-TWTraditionalChinese,TaiwaneseYes1-3
      1. GB18030NationalStandardChineseNo1-2
      1. GBKExtendedNationalStandardSimplifiedChineseNo1-2WIN936,Windows936
      1. ISO_8859_5ISO8859-5,ECMA113Latin/CyrillicYes1
      1. ISO_8859_6ISO8859-6,ECMA114Latin/ArabicYes1
      1. ISO_8859_7ISO8859-7,ECMA118Latin/GreekYes1
      1. ISO_8859_8ISO8859-8,ECMA121Latin/HebrewYes1
      1. JOHABJOHABKorean(Hangul)No1-3
      1. KOI8KOI8-R(U)CyrillicYes1KOI8R
      1. LATIN1ISO8859-1,ECMA94WesternEuropeanYes1ISO88591
      1. LATIN2ISO8859-2,ECMA94CentralEuropeanYes1ISO88592
      1. LATIN3ISO8859-3,ECMA94SouthEuropeanYes1ISO88593
      1. LATIN4ISO8859-4,ECMA94NorthEuropeanYes1ISO88594
      1. LATIN5ISO8859-9,ECMA128TurkishYes1ISO88599
      1. LATIN6ISO8859-10,ECMA144NordicYes1ISO885910
      1. LATIN7ISO8859-13BalticYes1ISO885913
      1. LATIN8ISO8859-14CelticYes1ISO885914
      1. LATIN9ISO8859-15LATIN1withEuroandaccentsYes1ISO885915
      1. LATIN10ISO8859-16,ASROSR14111RomanianYes1ISO885916
      1. MULE_INTERNALMuleinternalcodeMultilingualEmacsYes1-4
      1. SJISShiftJISJapaneseNo1-2Mskanji,ShiftJIS,WIN932,Windows932
      1. SHIFT_JIS_2004ShiftJIS,JISX0213JapaneseNo1-2
      1. sql_ASCIIunspecified(seetext)anyYes1
      1. UHCUnifiedHangulCodeKoreanNo1-2
      1. WIN949,Windows949UTF8Unicode,8-bitallYes1-4Unicode
      1. WIN866WindowsCP866CyrillicYes1ALTWIN874
      1. WindowsCP874ThaiYes1
      1. WIN1250WindowsCP1250CentralEuropeanYes1
      1. WIN1251WindowsCP1251CyrillicYes1
      1. WINWIN1252WindowsCP1252WesternEuropeanYes1
      1. WIN1253WindowsCP1253GreekYes1
      1. WIN1254WindowsCP1254TurkishYes1
      1. WIN1255WindowsCP1255HebrewYes1
      1. WIN1256WindowsCP1256ArabicYes1
      1. WIN1257WindowsCP1257BalticYes1
      1. WIN1258WindowsCP1258VietnameseYes1ABC,TCVN,TCVN5712,VSCII
    常用的简体中文字符集是UTF8和EUC_CN两种。
    自动转换字符集<来自文档>:
        1. ServerCharacterSetAvailableClientCharacterSets
        1. BIG5notsupportedasaserverencoding
        1. EUC_CNEUC_CN,MULE_INTERNAL,UTF8
        1. EUC_JPEUC_JP,SJIS,UTF8
        1. EUC_KREUC_KR,UTF8
        1. EUC_TWEUC_TW,BIG5,UTF8
        1. GB18030notsupportedasaserverencoding
        1. GBKnotsupportedasaserverencoding
        1. ISO_8859_5ISO_8859_5,KOI8,UTF8,WIN866,WIN1251
        1. ISO_8859_6ISO_8859_6,UTF8
        1. ISO_8859_7ISO_8859_7,UTF8
        1. ISO_8859_8ISO_8859_8,UTF8
        1. JOHABJOHAB,UTF8
        1. KOI8KOI8,ISO_8859_5,WIN1251
        1. LATIN1LATIN1,UTF8
        1. LATIN2LATIN2,WIN1250
        1. LATIN3LATIN3,UTF8
        1. LATIN4LATIN4,UTF8
        1. LATIN5LATIN5,UTF8
        1. LATIN6LATIN6,UTF8
        1. LATIN7LATIN7,UTF8
        1. LATIN8LATIN8,UTF8
        1. LATIN9LATIN9,UTF8
        1. LATIN10LATIN10,UTF8
        1. MULE_INTERNALMULE_INTERNAL,EUC_CN,EUC_JP,EUC_KR,EUC_TW,LATIN1toLATIN4,WIN1250,WIN1251
        1. SJISnotsupportedasaserverencoding
        1. sql_ASCIIany(noconversionwillbeperformed)
        1. UHCnotsupportedasaserverencoding
        1. UTF8allsupportedencodings
        1. WIN866WIN866,WIN1251
        1. WIN874WIN874,UTF8
        1. WIN1250WIN1250,LATIN2,UTF8
        1. WIN1251WIN1251,WIN866
        1. WIN1252WIN1252,UTF8
        1. WIN1253WIN1253,UTF8
        1. WIN1254WIN1254,UTF8
        1. WIN1255WIN1255,UTF8
        1. WIN1256WIN1256,UTF8
        1. WIN1257WIN1257,UTF8
        1. WIN1258WIN1258,UTF8
      以下针对客户端与服务器字符集配置问题作几个小测试。
      测试一:服务器、客户端、语言环境一致的情况
          1. [postgre@iss3984~]$echo$LANG
          1. en_US.UTF-8
          1. [postgre@iss3984~]$psqldaduxiong
          1. Welcometopsql8.3.11(server8.3.10),thePostgresqlinteractiveterminal.
          1. Type:
          1. \copyrightfordistributionterms
          1. \hforhelpwithsqlcommands
          1. \?forhelpwithpsqlcommands
          1. \gorterminatewithsemicolontoexecutequery
          1. \qtoquitdaduxiong=#\l
          1. Listofdatabases
          1. Name|Owner|Encoding
          1. -----------+---------+----------
          1. daduxiong|postgre|UTF8
          1. postgres|postgre|UTF8
          1. template0|postgre|UTF8
          1. template1|postgre|UTF8(4rows)
          1. daduxiong=#showclient_encoding;
          1. client_encoding-----------------
          1. UTF8(1row)daduxiong=#insertintot1values(1,'中国');
          1. INSERT01
          1. daduxiong=#select*fromt1;id|
          1. name
          1. ----+------------------------
          1. 1|中国(1row)
        服务器与客户端字符集相同,在数据录入时不发生字符集转换;因语言环境也相同所以展现不会出现乱码。
        测试二:客户端与服务器、语言环境不一致的情况
            1. daduxiong=#\encoding
            1. GBKdaduxiong=#show
            1. client_encoding;
            1. client_encoding-----------------
            1. GBK(1row)
            1. daduxiong=#insertintot1values(2,'日本');
            1. INSERT01daduxiong=#select*fromt1;
            1. id|name
            1. ----+-------------------------
            1. 1|�й�
            1. 2|日本(2rows)
          客户端与服务器的字符集不一致,在数据录入时将发生字符集转换;当前展现的第二条记录非乱码形式是因为客户端字符集为GBK,在UTF8下同样出现乱码,在使用时需要语言环境进行配置。
          测试三:服务器与客户端、语言环境不一致的情况
              1. daduxiong=#\q
              1. [postgre@iss3984~]$LANG=GBKexportLANG
              1. [postgre@iss3984~]$echo$LANG
              1. GBK
              1. [postgre@iss3984~]$psqldaduxiong
              1. Welcometopsql8.3.11(server8.3.10),thePostgresqlinteractiveterminal.
              1. Type:
              1. \copyrightfordistributionterms
              1. \hforhelpwithsqlcommands
              1. \?forhelpwithpsqlcommands
              1. \gorterminatewithsemicolontoexecutequery
              1. \qtoquitdaduxiong=#showclient_encoding;
              1. client_encoding
              1. -----------------
              1. UTF8
              1. (1row)
              1. daduxiong=#\encodingGBK
              1. daduxiong=#select*fromt1;
              1. id|name
              1. ----+-------------------------
              1. 1|�й�
              1. 2|日本
              1. (2rows)
              1. daduxiong=#insertintot1values(3,'美国');
              1. INSERT01daduxiong=#select*fromt1;
              1. id|name
              1. ----+-------------------------
              1. 1|�й�
              1. 2|日本
              1. 3|美国
              1. (3rows)daduxiong=#\q
            客户端、语言环境均配置为GBK字符集,在当前环境下展现的为非乱码形式,数据录入时将发生字符集转换。
            测试四:服务器与客户端、语言环境恢复一致的情况
                1. [postgre@iss3984~]$LANG=en_US.UTF8exportLANG
                1. [postgre@iss3984~]$psqldaduxiong
                1. Welcometopsql8.3.11(server8.3.10),thePostgresqlinteractiveterminal.
                1. Type:\copyrightfordistributionterms
                1. \hforhelpwithsqlcommands
                1. \?forhelpwithpsqlcommands
                1. \gorterminatewithsemicolontoexecutequery
                1. \qtoquitdaduxiong=#showclient_encoding;client_encoding
                1. -----------------
                1. UTF8(1row)
                1. daduxiong=#select*fromt1;
                1. id|name
                1. ----+-------------------------
                1. 1|中国
                1. 2|�ユ�
                1. 3|缇��
                1. (3rows)daduxiong=#
              通过恢复原始的Postgresql字符集状态,所有环境均为UTF8字符集,此时发现经过字符集转换后的内容为乱码。
              原文标题:postgresql 字符集
              链接http://www.cnblogs.com/daduxiong/archive/2010/10/14/1851552.html
              【编辑推荐】
              1. PostgreSQL新版提高Oracle兼容性 欲与甲骨文试比高?
              2. Sun如何处理PostgreSQL和Java DB?
              3. PostgreSQL 8.2简介 附下载地址
              4. 简评MySQL和PostgreSQL优劣
              5. 将你的网站从MySQL改为PostgreSQL
              【责任编辑: 彭凡 TEL:(010)68476606】

              猜你在找的Postgre SQL相关文章