PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

क्या JDBC पोस्टग्रेज ड्राइवर के पास डेटाबेस से कनेक्ट करने के लिए क्लाइंट_एन्कोडिंग सेट करने का कोई तरीका है?

चूंकि जावा आंतरिक रूप से एक यूनिकोड एन्कोडिंग (UTF-16) का उपयोग करता है, इसलिए client_encoding का उपयोग करना अस्वाभाविक होगा। UTF8 . से अलग PostgreSQL JDBC ड्राइवर में।

नतीजतन, यह client_encoding . को बाध्य करता है उस मान के लिए, देखें org.postgresql.core.v3.ConnectionFactoryImpl.getParametersForStartup :

private List<String[]> getParametersForStartup(String user, String database, Properties info) {
  List<String[]> paramList = new ArrayList<String[]>();
  paramList.add(new String[]{"user", user});
  paramList.add(new String[]{"database", database});
  paramList.add(new String[]{"client_encoding", "UTF8"});
  paramList.add(new String[]{"DateStyle", "ISO"});
  [...]

वास्तव में, यदि क्लाइंट एन्कोडिंग को किसी और चीज़ में बदल दिया जाता है, तो JDBC ड्राइवर अपनी नाखुशी व्यक्त करता है अनिश्चित शब्दों में:

public void receiveParameterStatus() throws IOException, SQLException {
  // ParameterStatus
  pgStream.receiveInteger4(); // MESSAGE SIZE
  String name = pgStream.receiveString();
  String value = pgStream.receiveString();

  [...]

  if (name.equals("client_encoding")) {
    if (allowEncodingChanges) {
      if (!value.equalsIgnoreCase("UTF8") && !value.equalsIgnoreCase("UTF-8")) {
        LOGGER.log(Level.FINE,
            "pgjdbc expects client_encoding to be UTF8 for proper operation. Actual encoding is {0}",
            value);
      }
      pgStream.setEncoding(Encoding.getDatabaseEncoding(value));
    } else if (!value.equalsIgnoreCase("UTF8") && !value.equalsIgnoreCase("UTF-8")) {
      close(); // we're screwed now; we can't trust any subsequent string.
      throw new PSQLException(GT.tr(
          "The server''s client_encoding parameter was changed to {0}. The JDBC driver requires client_encoding to be UTF8 for correct operation.",
          value), PSQLState.CONNECTION_FAILURE);

    }
  }

जब आप अपने जावा प्रोग्राम में डेटा पढ़ते हैं तो संभवतः आपको एन्कोडिंग रूपांतरण समस्या होती है; कोशिश करें और वहां समस्या को ठीक करें।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL (Postgres) में JSON ऑब्जेक्ट्स की सरणी के रूप में लौटें

  2. एसक्यूएल क्वेरी से पहला और आखिरी रिकॉर्ड कैसे प्राप्त करें?

  3. मेमोरी डेटाबेस में Postgresql django

  4. SQL क्वेरी की परिणाम पंक्तियों को समान रूप से पूर्ण श्रेणी में कैसे कम करें?

  5. क्वेरी परिणामों को BigQuery से Postgres में निर्यात करें