javadoc-常量字段的值未正确显示

gopyfrb3  于 2021-07-09  发布在  Java
关注(0)|答案(1)|浏览(374)

我在为我的一个项目创建文档时遇到了一个问题,某些字符在常量字段值部分没有正确显示。那些字母是“š,č,ć,ž,đ" 就我而言。
下面是我的简单代码示例:

/**
 * _insert MainClass doc ščšđčžćđš_
 * 
 * @author Bob
 */
public class MainClass {
    private static final String COOL_LETTERS = "č-š-ć-đ-ž";
    private static final String NORMAL_LETTERS = "a-b-c-d-e";

    /**
     * _insert main method doc đščđščšč_
     * 
     * @param args Arguments đšpšč
     */
    public static void main(String[] args) {
        System.out.println("Some normal letters: " + NORMAL_LETTERS);
        System.out.println("Some cool letters: " + COOL_LETTERS);
    }
}

运行javadoc工具后,我得到以下结果:

然后单击常量字段

如第一幅图所示,类和方法的文档中的特殊字符按其应有的方式显示,而不是在字符串常量的值中显示,如第二幅图所示。它们显示为/ud
项目编码设置为utf8
我在创建javadoc时添加了-encoding“utf-8”-docencoding“utf-8”-charset“utf-8”参数
有没有办法让这些字符正确显示?

klh5stk1

klh5stk11#

javadoc有一些硬编码方法来表示常量字段表中的常量表达式。这无法配置或影响。
这尤其包括通过仅复制未经修改的可打印ascii字符来打印字符串表达式。所有其他字符都被复制为unicode转义。
这将产生java源代码,虽然看起来不好看,但它确实会产生完全相同的字符串内容(并且对源代码或文档编码不太敏感)。这可能就是为什么要这么做的原因。
除非您运行自己修改过的javadoc工具版本或对生成的html进行后期处理(可能是在子类doclet中),否则无法避免这种情况。它是在实际的标准doclet用于输出之前完成的。
资料来源:http://hg.openjdk.java.net/jdk7/jdk7/langtools/file/ce654f4ecfd8/src/share/classes/com/sun/tools/javadoc/fielddocimpl.java#l175

相关问题