Java >> Java Program >  >> Tag >> char

JDBC:Problem med att återge danska specifika tecken:Ø,Å,Æ

Problem:Danska specifika tecken visas felaktigt (som icke läsbara tecken)

Given:Databasen är Microsoft SQL server 2019 , databassorteringen är:Danish_Greenlandic_100_CS_AS . Data har lagrats i Varchar-kolumntyper, data har redan funnits där; ändra sammanställning eller någon dataändring är inte lämplig. Jag infogar inte data, jag läser bara dem (typ av rapportfunktioner). Allt fungerar bra på min lokala dator, men i iscensättningsmiljön kodas danska tecken felaktigt.

Anslutningsinitieringskodavsnitt

Properties props = new Properties();
props.put ("charSet", "UTF-8");
props.put("username", "dbusername");
props.put("password", "secret");
try (Connection con = getConnection(repositoryUrl, props);
   PreparedStatement preparedStatement = con.prepareStatement(sqlQuery)
) {

Läser datautdrag:

ResultSet rs = //getResultSet
while (rs.next()) {
            Map<String, String> rowEntry = new LinkedHashMap<>();
            for (int i =0; i < columnCount; i++ ) {
                int columnIndex = i+1;
                String value = rs.getString(columnIndex);
                rowEntry.put(columnName, value);
            }
            result.add(rowEntry);
        }

Svar

Problemet kan relateras till användningen av olika teckenuppsättningar för MacOS (som standard, UTF-8 ), i din lokala bärbara dator och Windows (cp-1252 eller någon variant) i iscensättningsmiljön.

Även om du angav teckenuppsättning UTF-8 i dina anslutningsegenskaper, kanske problemet är relaterat till någon form av efterbearbetning.

I själva verket, som anges i frågekommentarerna, är både serversvaret och loggfilerna typiska exempel på det tidigare nämnda problemet med teckenuppsättningen.

Vänligen granska teckenuppsättningen som finns på plats i JVM i alla miljöer:granska och anpassa vid behov värdet på file.encoding systemegenskap på din bärbara dator och iscensättningsmiljön, kanske det ger dig lite insikter om problemet och hjälper dig att lösa det.

Så försök att lägga till file.encoding för att lösa problemet JVM-parameter medan du kör din applikation:

java -Dfile.encoding=UTF=8 -jar your_app.jar


Java-tagg