2017-01-23 3 views
0

Ich bin neu bei docx4j. Ich erstelle neue .docx Datei mit docx4j. Mein Code funktioniert perfekt beim Bereitstellen von Projekten von Eclipse auf Tomcat Server. Aber es funktioniert nicht auf Live-Server. Unten ist mein Code:UTF-8 funktioniert nicht im Live-Server

String html = "<html><head><meta charset=\"UTF-8\"><title></title>" 
       + "</head><body>" 
       + "<div><div style='width:100%;display:inline; text-align:right;'>मितिः &nbsp; " 
       +new Date()+"</div><div class=\"block p-top-2\" style='display:block; float:left;'>" 
       + "च.नं. &nbsp;" 
       + "<span style=\"display: inline !important;\">"+10088+" - "+73 + "/" + 74 
       + "</span></div></div></body></html>"; 
WordprocessingMLPackage wordMLPackage = WordprocessingMLPackage.createPackage(); 

AlternativeFormatInputPart afiPart = new AlternativeFormatInputPart(new PartName("/hw.html")); 
afiPart.setBinaryData(html.getBytes()); 
afiPart.setContentType(new ContentType("text/html")); 
Relationship altChunkRel = wordMLPackage.getMainDocumentPart().addTargetPart(afiPart); 
afiPart.registerInContentTypeManager(); 

CTAltChunk ac = Context.getWmlObjectFactory().createCTAltChunk(); 
ac.setId(altChunkRel.getId()); 
wordMLPackage.getMainDocumentPart().addObject(ac);   

wordMLPackage.getContentTypeManager().addDefaultContentType("html", "text/html;charset=UTF-8"); 
wordMLPackage.save(new File("created_doc.docx")); 

Unten ist mein Screenshot von meinem lokalen: Expected format

Unten ist mein Screenshot von meinem Live-Server UTF-8 not supported format

Ich bin mit Tomcat und Spring Framework. Projekt erstellt mit Maven und auf Windows Server 2012 R2 bereitgestellt.

+0

Sind die Screenshots des Docx in Word geöffnet? Öffnen Sie auf den jeweiligen Rechnern oder auf Ihrem lokalen Rechner? Vielleicht verschiedene Schriftarten installiert? Sie erhalten eher eine Antwort, wenn Sie die tatsächlichen docx-Dateien irgendwo posten. Ist das Java-Gebietsschema in Eclipse und Tomcat identisch? – JasonPlutext

Antwort

1

Ich vermute, das das Problem sein kann:

afiPart.setBinaryData(html.getBytes()); 

, dass die Plattform-Standard-Codierung verwenden - die zwischen dem lokalen Rechner und dem Server deutlich unterscheiden. Ich würde Sie dazu ermutigen, immer die Codierung anzugeben. Wenn Sie UTF-8 möchten, verwenden Sie:

afiPart.setBinaryData(html.getBytes(StandardCharsets.UTF_8)); 
+0

danke es hat wirklich geholfen – dilz