Java IText使用西里尔字母

Java IText使用西里尔字母,java,itext,Java,Itext,我尝试将pdp功能与PdfOutline结合使用,以创建到存储在中央网络位置的文档的链接。这很好,但是当url中使用西里尔字符时,系统无法找到文档。调查发现,在Pdf打开的链接中,所有西里尔字母都消失了 我的代码: //Create the index tree PdfOutline index = new PdfOutline(writer.getDirectContent().getRootOutline(), new PdfDestination(PdfDestination.FITH)

我尝试将pdp功能与PdfOutline结合使用,以创建到存储在中央网络位置的文档的链接。这很好,但是当url中使用西里尔字符时,系统无法找到文档。调查发现,在Pdf打开的链接中,所有西里尔字母都消失了

我的代码:

//Create the index tree

PdfOutline index = new PdfOutline(writer.getDirectContent().getRootOutline(), new PdfDestination(PdfDestination.FITH), "Detailed Info");

//Add entry to index

PdfAction act = new PdfAction("file://CENTRALSERVER/Конвертинг/MyFile.xls");
new PdfOutline(index, act, "My File");

我做错了什么

看起来您遇到了一些字符串编码问题。该函数可能需要一个UTF-8字符串,因为它检测到被剥离的“ilegal”字符。您可以尝试对字符串进行编码,以便它可以在不删除坏字符的情况下通过函数:

public static String encodeFilename(String s)
{
    try
    {
        return java.net.URLEncoder.encode(s, "UTF-8");
    }
    catch (java.io.UnsupportedEncodingException e)
    {
        throw new RuntimeException("UTF-8 is an unknown encoding!?");
    }
}
另外,请尝试查看此文档以了解有关字符串编码的更多信息

最终,您的代码可能如下所示:

PdfAction act = new PdfAction(encodeFilename("file://CENTRALSERVER/Конвертинг/MyFile.xls"));

我对jasper reports也有同样的问题,它在深层次上产生了一个问题。我使用了编码,但不幸的是IE不喜欢%编码的文件URL,所以我必须运行生成的pdf,找到URL并再次解码。