सबसे पहले, डेनियल का उत्तर सही, सुरक्षित विकल्प है।
SQL_ASCII से किसी अन्य चीज़ में बदलने के विशिष्ट मामले के लिए, आप धोखा दे सकते हैं और डेटाबेस एन्कोडिंग को पुन:असाइन करने के लिए बस pg_database कैटलॉग को पोक कर सकते हैं। यह मानता है कि आपने पहले से ही अपेक्षित एन्कोडिंग में कोई भी गैर-ASCII वर्ण संग्रहीत कर लिया है (या कि आपने किसी गैर-ASCII वर्णों का उपयोग नहीं किया है)।
तब आप यह कर सकते हैं:
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'thedb'
यह डेटाबेस के संयोजन को नहीं बदलेगा, बस एन्कोडेड बाइट्स को वर्णों में कैसे परिवर्तित किया जाता है (इसलिए अब length('£123')
5 के बजाय 4 लौटाएगा)। यदि डेटाबेस 'सी' संयोजन का उपयोग करता है, तो ASCII स्ट्रिंग्स के क्रम में कोई परिवर्तन नहीं होना चाहिए। हालांकि आपको गैर-ASCII वर्णों वाले किसी भी सूचकांक को फिर से बनाने की आवश्यकता होगी।
चेतावनी एम्प्टर। डंपिंग और रीलोडिंग आपके डेटाबेस सामग्री की जांच करने का एक तरीका प्रदान करता है वास्तव में आपके द्वारा अपेक्षित एन्कोडिंग में है, और ऐसा नहीं है। और अगर यह पता चलता है कि आपके पास डेटाबेस में कुछ गलत तरीके से एन्कोडेड डेटा है, तो बचाव करना मुश्किल होने वाला है। इसलिए यदि आप कर सकते हैं, डंप करें और पुन:प्रारंभ करें।