數據庫編碼問題--PostgreSQL篇(一)

前端之家收集整理的这篇文章主要介绍了數據庫編碼問題--PostgreSQL篇(一)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

想將PyFlow做到跨數據庫、跨平台、無關簡繁,在編寫一些模塊這過程盡可能通用。在漢字簡繁轉換過程中因為數據庫編碼問題,數據訪問模塊可能就暫時就不寫成通用模塊了。 pg漢字編碼問題,服務端默認不支持BIG5/GB2312/GBK/GB8030等,創建數據庫或數據庫目錄初始化時不能直接指定字符集名稱為上面字符集,保存漢字可以使用的有sql_ASCII/UTF-8。 在繼續寫下去時,先說一下訪問pg的方式,pg的接口分ansi和unicode兩種。這樣在字符編碼和驅動方式就會有四種組合。當組合不對時,就可能出現問題,如亂碼、空白等。 sql_ASCII編碼直接使用漢字分為兩字節字符保存,pg將每一字節當一個字符,當字節值大於127時會當作連續的字符,但連續幾個說不定,文檔沒說 明,但應是2個。這樣就可能造成GB18030字符集某些字符顯示有亂碼問題。同時,使用sql_ASCII編碼保存的內容不能使用pg轉換為其它字符集 編碼。 UTF-8編碼則使用4字節進行保存,但pg會作為一個整體看待。它的內容可以轉接為任意字符集編碼。 再說回訪問方式。 使用ansi驅動訪問sql_ASCII數據庫時,pg直接返回保存的內容;訪問UTF-8編碼時,pg會將UTF-8內容轉為客戶端指定或默認的 encoding字符集編碼再返回。返回的結果都是ASCII字節形式,編碼細節需要客戶端處理,這也就是最容易出現亂碼情況。 使用unicode驅動訪問時。sql_ASCII編碼格式的數據則有問題,因為pg不會將大於127內容轉換為unicode格式,只用空格填充。訪問UTF-8編碼數據庫時,則正常返回unicode格式內容,只要系統支持unicode應都不會出現亂碼。 另外,還有另外一半未講完。就是寫入數據庫,這個待測試後再寫。

猜你在找的Postgre SQL相关文章