Thread: Do I have to change my Locale or database Encoding to enable LOWER() ?

Do I have to change my Locale or database Encoding to enable LOWER() ?

From
"江文"
Date:
Hello Hackers,
    I store some information of manufacturing materials in a table, and in this table there's a column storing
material'sname. These names are mixed with Chinese characters and English characters. 
    To convert all English characters in material names into lower cases, I wrote a query:   SELECT
LOWER("ChineseDesc")FROM "Materials"; 

    Then Postgres reported an error:
ERROR:  invalid multibyte character for locale
HINT:  The server's LC_CTYPE locale is probably incompatible with the database encoding.

    After some googling I found out it's caused by the settings of LC_CTYPE & Encoding of the database.

    Here's my db's settings:
    My LC_CTYPE is set to Chinese_People's Republic of China.936 and I'm using UNICODE as this database's encoding.

    But still I'm puzzled:
    Which encoding to choose for my database or do I have to change my Locale setting? I prefer to stay with UNICODE,
becauseI don't want to see my data clearly in PGAdmin 3 instead of *&^%$#@ . 

    Any suggestions will be appreicated!
    Thanks in advance,

    Henry

------------------------------------------
弄懂了PostgreSQL, 就知道了什么才是共产主义