Java ApachePOI-Docx输出问题

Java ApachePOI-Docx输出问题,java,file,locale,apache-poi,encode,Java,File,Locale,Apache Poi,Encode,我正在评估apachepoi作为编写docx文件的选项。我正在寻找的具体内容是在docx文件中以不同的语言生成内容(具体来说是印地语/马拉地语)。我面临以下问题: 当docx文件被写入时,“印地语/马拉地语”文本显示为方形框,即使字体“Arial Unicode MS”支持它。问题是,当我们选中复选框时,MS Word将字体显示为“Cailbri”,尽管我已明确将字体设置为“Arial Unicode MS”。如果我选择MS Word中的框,然后将字体更改为“Arial Unicode MS”,

我正在评估apachepoi作为编写docx文件的选项。我正在寻找的具体内容是在docx文件中以不同的语言生成内容(具体来说是印地语/马拉地语)。我面临以下问题:

当docx文件被写入时,“印地语/马拉地语”文本显示为方形框,即使字体“Arial Unicode MS”支持它。问题是,当我们选中复选框时,MS Word将字体显示为“Cailbri”,尽管我已明确将字体设置为“Arial Unicode MS”。如果我选择MS Word中的框,然后将字体更改为“Arial Unicode MS”,则可以正确看到印地语/马拉地语单词。知道为什么会这样吗?请注意,我使用的是POI的开发版本,因为以前的稳定版本不支持字体系列的设置。资料来源如下:

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import org.apache.poi.xwpf.usermodel.XWPFDocument;
import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun;

public class CreateDocumentFromScratch 
{

    public static void main(String[] args) 
    {
        XWPFDocument document = new XWPFDocument();

        XWPFParagraph paragraphTwo = document.createParagraph();
        XWPFRun paragraphTwoRunOne = paragraphTwo.createRun();       
        paragraphTwoRunOne.setFontFamily("Arial Unicode MS");
        paragraphTwoRunOne.setText("नसल्यास");


        XWPFParagraph paragraphThree = document.createParagraph();
        XWPFRun paragraphThreeRunOne = paragraphThree.createRun();
        paragraphThreeRunOne.setFontFamily("Arial Unicode MS");
        paragraphThreeRunOne.setText("This is nice");

        FileOutputStream outStream = null;
        try {
            outStream = new FileOutputStream("c:/will/First.doc");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

        try {
            document.write(outStream);
            outStream.close();
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

任何帮助都将不胜感激。

恢复一个非常旧的帖子;OP能否确认正在使用的MS Office版本?问题似乎是运行在Windows XP上的MS Office 2003。但是,它也可以在更高的操作系统版本上

MS Word似乎将Mangal字体应用于印地语文字[编码标准:印度语:印地语ISCII 57002(Devanagari)]。以下链接对此进行了说明:

建议的解决办法: 从Windows XP控制面板中,选择区域和语言选项。选择语言。选中“为复杂脚本和从右向左的语言(包括泰语)安装文件”框

重启电脑

但是,在Windows上使用LibreOffice版本4.3.5.2,在Linux(Ubuntu)上使用LibreOffice版本4.2.7.2打开文件时,没有发现这样的问题

使用了以下库: poi-3.10-FINAL-20140208.jar,poi-ooxml-3.10-FINAL-20140208.jar,
poi-ooxml-schemas-3.10-FINAL-20140208.jar,xmlbeans-2.3.0.jar,
dom4j-1.6.1.jar,stax-api-1.0.1.jar

请提供POI和MS Word的准确版本-最近的POI版本似乎没有出现问题。我用POI api 3.11尝试了您的代码,效果很好。我使用MS Word 2013打开.doc文件