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

时间:2017-10-31 22:00:17

标签: java javadoc java-9

我正在为我的一个项目创建文档,但是我遇到了一些问题,某些字符在常量字段值部分中没有正确显示。在我的案例中,这些信件是“š,č,ć,ž,đ”。

这是我的简单代码示例:

 /**
 * _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工具后,我得到以下结果:

enter image description here

然后单击常量字段

enter image description here

如第一张图片所示,方法的文档中的特殊字符应按原样显示,但不会显示在字符串常量的,如第二张图片所示。它们显示为 / uABCD

  • 项目编码设置为utf8
  • 我在创建javadoc时添加 -encoding“UTF-8”-docencoding“UTF-8”-charset“UTF-8”参数

有没有办法让这些角色正确显示?

1 个答案:

答案 0 :(得分:2)

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