diff --git a/contrib/dblink/dblink.c b/contrib/dblink/dblink.c
index cc8714d..85b058b 100644
--- a/contrib/dblink/dblink.c
+++ b/contrib/dblink/dblink.c
@@ -191,7 +191,8 @@ typedef struct remoteConnHashEnt
 							 errdetail("%s", msg))); \
 				} \
 				dblink_security_check(conn, rconn); \
-				PQsetClientEncoding(conn, GetDatabaseEncodingName()); \
+				if (strcmp(pg_encoding_to_char(PQclientEncoding(conn)), GetDatabaseEncodingName()) != 0) \
+					PQsetClientEncoding(conn, GetDatabaseEncodingName()); \
 				freeconn = true; \
 			} \
 	} while (0)
@@ -271,7 +272,8 @@ dblink_connect(PG_FUNCTION_ARGS)
 	dblink_security_check(conn, rconn);
 
 	/* attempt to set client encoding to match server encoding */
-	PQsetClientEncoding(conn, GetDatabaseEncodingName());
+	if (strcmp(pg_encoding_to_char(PQclientEncoding(conn)), GetDatabaseEncodingName()) != 0)
+		PQsetClientEncoding(conn, GetDatabaseEncodingName());
 
 	if (connname)
 	{
