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

數據庫編碼問題--PostgreSQL篇(一),第1张

概述    想將PyFlow做到跨數據庫、跨平台、無關簡繁,在編寫一些模塊這過程盡可能通用。在漢字簡繁轉換過程中因為數據庫編碼問題,數據訪問模塊可能就暫時就不寫成通用模塊了。 pg漢字編碼問題,服務端默認不支持BIG5/GB2312/GBK/GB8030等,創建數據庫或數據庫目錄初始化時不能直接指定字符集名稱為上面字符集,保存漢字可以使用的有SQL_ASCII/UTF-8。 在繼續寫下去時,先說一下訪

想將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應都不會出現亂碼。 另外,還有另外一半未講完。就是寫入數據庫,這個待測試後再寫。

总结

以上是内存溢出为你收集整理的數據庫編碼問題--PostgreSQL篇(一)全部内容,希望文章能够帮你解决數據庫編碼問題--PostgreSQL篇(一)所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1180340.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存