2017-01-23 14 views
0

Я новичок в docx4j. Я создаю новый файл .docx, используя docx4j. Мой код отлично работает при развертывании проекта с сервера eclipse на tomcat. Но он не работает на реальном сервере. Ниже мой код:UTF-8 не работает на сервере

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")); 

Ниже мой снимок экрана мой местный: Expected format

Ниже мой снимок экрана моего живого сервера UTF-8 not supported format

Я использую Tomcat и Spring Framework. Проект, созданный с использованием maven и развернутый на сервере Windows 2012 r2.

+0

Являются ли скриншоты docx открытыми в Word? Открыть на соответствующих машинах или на вашей локальной машине? Возможно, установлены разные шрифты? Вы, скорее всего, получите ответ, если где-нибудь разместите фактические файлы docx. Является ли языковой стандарт Java одинаковым в eclipse и tomcat? – JasonPlutext

ответ

1

Я подозреваю, что это может быть проблема:

afiPart.setBinaryData(html.getBytes()); 

Это будет использовать платформу по умолчанию кодировку - которая могла бы четко отличаться между локальной машиной и сервером. Я бы настоятельно рекомендовал вам всегда указать кодировку. Если вы хотите UTF-8, используйте:

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

спасибо, что это действительно помогло – dilz

 Смежные вопросы

  • Нет связанных вопросов^_^