我正在开发一个处理docx文件的XML内容并将其转换为特定格式的JAVA程序。它工作的很好,但是如果Word文件包含符号字符,例如我有问题希腊信件。在这种情况下,我只看到小方块。从docx中提取符号字符
我检查了源和看到这样的事情:
<w:r w:rsidRPr="008E65F6"><w:rPr><w:rFonts w:ascii="Symbol" w:hAnsi="Symbol"/></w:rPr><w:t>ďˇ</w:t></w:r>
或者,如果我将编码设置为UTF-8:
<w:r w:rsidRPr="008E65F6"><w:rPr><w:rFonts w:ascii="Symbol" w:hAnsi="Symbol"/></w:rPr><w:t></w:t></w:r>
当我认为作为六,似乎希腊对于alpha,字符编码为EF 81 A1
,对于beta等编码为EF 81 A2
。
我也试过val.getBytes(Charset.forName("utf8"))
其中val是<w:t>
标记的值。结果是例如[-17, -127, -95]
。负面的价值对我来说是相当惊人的。
所以我的问题是,什么是一个安全可靠的方法来将这些符号转换为普通的UTF-8字符?
通常,在由Word发出的docx文件中,它已经是UTF-8;请参阅主文档部分顶部的XML声明(/word/document.xml)。你的与众不同吗? – JasonPlutext
是的你是对的,它是UTF-8。但是,这些字符显示不正确。大概符号字体不使用UTF-8字符编码? – ttamas