日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Postgres客户端编码问题

發布時間:2023/12/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Postgres客户端编码问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

數據庫編程的編碼問
數據庫編程設計的編碼問題包括三個方面:
??? 數據庫服務器編碼;
??? 數據庫客戶端編碼;
??? 本地環境編碼。
(1)數據庫服務器字符編碼:
數據庫服務器支持某種編碼,是指數據庫服務器能夠從客戶端接收、存儲以及向客戶端提供該種編碼的字符,并能將該種編碼的字符轉換到其它編碼。
查看PostgreSQL數據庫服務器端編碼:
postgres=# show server_encoding;
?server_encoding?
-----------------
?UTF8
postgres=# \l
?? 名稱??? |? 擁有者?? | 字元編碼 |?????????????????????? Collate?????????????????????? |??????????????????????? Ctype??????????????????????? |??????? TestDb1?? | TestRole1 | UTF8???? | Chinese (Simplified)_People's Republic of China.936 | Chinese (Simplified)_People's Republic of China.936 |?
?TestDb2?? | postgres? | UTF8???? | Chinese (Simplified)_People's Republic of China.936 | Chinese (Simplified)_People's Republic of China.936 |?
?postgres? | postgres? | UTF8???? | Chinese (Simplified)_People's Republic of China.936 | Chinese (Simplified)_People's Republic of China.936 |?
?template0 | postgres? | UTF8???? | Chinese (Simplified)_People's Republic of China.936 | Chinese (Simplified)_People's Republic of China.936 |?
(2)數據庫客戶端字符編碼:
?客戶端工具支持某種編碼,必須能夠顯示從數據庫讀取的該種編碼的字符,也能通過本工具將該種編碼的字符提交到給服務器端。???????
?查看PostgreSQL客戶端工具psql編碼:
?postgres=# show client_encoding;
?GBK
?postgres=# \encoding
?GBK
?指定Postgresql會話的客戶端編碼:
?postgres=# set client_encoding to 'utf8';
?SET
?postgres=# show client_encoding;
?client_encoding?
?-----------------
?UTF8
?(3)本地環境編碼:
如果使用dos的命令行界面,本地環境就是指dos命令行環境的編碼,可以使用dos命令chcp查看dos環境編碼:
D:\Program Files\PowerCmd>chcp
活動代碼頁: 936
----936為簡體中文,GBK;
如果在使用某種編輯器,則本地環境編碼取該編輯器的編碼設置。

四、實例
雖然PG支持客戶端和服務器端的編碼自動轉換,但是還需要遵從一個原則:本地環境的編碼和客戶端編碼需一致。
1、PostgreSQL的數據庫postgres,服務器端字符編碼為utf8,客戶端工具psql字符編碼為GBK,本地環境dos命令編輯器編碼為GBK,此時:
postgres=# show server_encoding;
?server_encoding?
-----------------
?UTF8
(1 行記錄)
postgres=# show client_encoding;
?client_encoding?
-----------------
?GBK
(1 行記錄)
postgres=# \! chcp
活動代碼頁: 936
postgres=# select * from "TestTb1";
? Column1???????????????????????????????????????????????????????????????
-----------
?測試?
?11
由于本地環境和客戶端編碼都是GBK,一致,沒有問題;
insert時,客戶端接收本地環境輸入的GBK字符(兩者都為GBK),客戶端傳到服務器端時自動轉換為UTF-8編碼存儲,沒有問題;
select時,服務器端傳到客戶端,UTF-8編碼自動轉換為GBK編碼,在本地環境顯示時,本地環境就是GBK編碼,顯示沒有問題。

2、PostgreSQL的數據庫postgres,服務器端字符編碼為utf8,客戶端工具psql字符編碼為utf8,本地環境dos命令編輯器編碼為GBK,此時:
postgres=# set client_encoding to 'utf8';
SET
postgres=# insert into test values('測試1');
閿欒?:? 鏃犳晥鐨?"UTF8" 緙栫爜瀛楄妭欏哄簭: 0xb2
postgres=# select * from test;
????? column1
--------------------
?嫻嬭瘯
(1 行記錄)????????????????????????????????????????????????????????????????????????????????????????????????????????
由于客戶端和服務器的編碼一致,故不進行轉碼,
insert時,本地輸入的GBK編碼到客戶端不自動轉換,客戶端把接收的字符作為utf編碼傳給服務器端不轉換,GBK的編碼作為UTF-8存儲,故有問題
報錯的信息為:ERROR:? invalid byte sequence for encoding "UTF8": 0xb2;
select時,服務端的utf編碼傳給客戶端不轉換,客戶端把utf編碼傳給本地環境不自動轉換,utf8編碼用gbk編碼顯示,故有問題。

3、本地環境就是指此時使用的環境,起初我使用powercmd代替windows的cmd命令行工具,實現上面第1個實例是總是失敗(亂碼)。
原因就是,此時本地環境編碼是指powercmd的編碼,而不是執行chcp命令得到的編碼。
而powercmd使用的編碼究竟是什么,我也沒有找到。

?

總結:①直接在psql執行insert或者select的時候,設置client_encoding=gbk(默認),不亂碼;(上面例子證明了)

   ②使用“\i sql文件.sql”(sql文件是utf8編碼)命令的時候,如果sql文件中有中文,一定要先行執行set client_encoding=utf8;(設置此之后,按照上面說的,客戶端不轉換,直接把接收的字符作為utf8編碼傳給服務器端,而文件本身就是utf8,所以不亂碼;同理如果sql文件是ansi編碼即gbk編碼的話,確保client_encoding為gbk;總之,sql文件與client_encoding編碼一致),才不亂碼。

總結

以上是生活随笔為你收集整理的Postgres客户端编码问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 中文字幕 欧美激情 | 国产91免费在线观看 | 免费黄色小视频网站 | 国产成人资源 | 特级特黄aaaa免费看 | 91精品一区二区三区综合在线爱 | 国产无精乱码一区二区三区 | 亚洲日本韩国在线 | 国产盗摄精品一区二区酒店 | 人人做人人爱人人爽 | 国产精品久久无码一三区 | 国产精品对白 | 欧美日韩制服 | 91精品免费在线观看 | 在线aa| 五月婷婷一区二区三区 | 欧美日韩国产成人 | 九色网址 | 农民人伦一区二区三区 | 亚洲专区av | 亚洲影院一区二区三区 | 亚洲国产成人自拍 | 涩涩视频网站在线观看 | 麻豆国产原创 | 色偷偷中文字幕 | 五月天色婷婷丁香 | 日本一区二区免费在线观看 | 日韩精品免费一区 | 欧美浓毛大泬视频 | 亚洲老女人av| 天天爽夜夜爽夜夜爽 | 国产精品传媒一区二区 | 国产亚洲欧洲 | 狠狠干in| 综合精品| 成人黄色视屏 | 亚洲一本在线 | 欧美不卡视频在线观看 | 北条麻妃一区二区三区在线观看 | 图片一区二区 | www.伊人网 | 奇米影视亚洲 | 国产美女精品 | 亚洲欧美日韩网站 | 3d动漫啪啪精品一区二区中文字幕 | 麻豆精品视频在线观看 | www.久草.com| 欧美日韩成人一区二区 | 免费黄网站在线观看 | 亚洲干综合 | 夜夜爽妓女8888视频免费观看 | 精品国产系列 | 可以在线观看的黄色 | 午夜精品久久久久久久无码 | www,xxx日本 | 中日韩中文字幕一区二区 | 看欧美一级片 | 富婆如狼似虎找黑人老外 | 亚洲先锋影音 | 国产精品 欧美激情 | 亚洲一区二区在线免费 | 91人妻一区二区三区蜜臀 | 成人av图片 | 成人综合婷婷国产精品久久 | 超碰国产一区二区三区 | 好爽又高潮了毛片 | 欧美福利一区二区 | 欧美黄色性生活 | 亚洲精品美女久久久 | 国产欧美综合一区 | 欧美久久久影院 | 国产乱人视频 | 亚洲欧美精品在线观看 | 黄色小视频在线免费观看 | 精品亚洲精品 | 亚洲综合91 | 免费国产网站 | 综合爱爱网 | 日韩av网址大全 | 国产精品一区免费观看 | 中文字幕第一页久久 | 日韩午夜影院 | 久久精精品久久久久噜噜 | 亚洲av无码一区二区乱子伦 | 国产精品日韩一区二区三区 | 亚洲AV无码国产日韩久久 | 美女少妇直播 | 国产女主播在线 | 国产熟女一区二区丰满 | 欧美精品色哟哟 | 国产首页| 欧美日韩二区三区 | 亚洲精品另类 | 在线成人观看 | yy111122少妇光屁股影院 | 99午夜视频 | 波多野结衣电影在线播放 | 久久怡红院 | 91视频国产精品 |