Rules to detect constructs that are either broken, extremely confusing or prone to runtime errors.
Edit me

JspEncoding

Since: PMD 4.0

Priority: Medium (3)

A missing ‘meta’ tag or page directive will trigger this rule, as well as a non-UTF-8 charset.

//CompilationUnit/Content[
not(Element[@Name="meta"][
   Attribute[@Name="content"]/AttributeValue[contains(lower-case(@Image),"charset=utf-8")]
]) 
and 
    not(JspDirective[@Name='page']/JspDirectiveAttribute[@Name='contentType'][contains(lower-case(@Value),"charset=utf-8")])
]

Example(s):

Most browsers should be able to interpret the following headers:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>

<meta http-equiv="Content-Type"  content="text/html; charset=UTF-8" />

Use this rule by referencing it:

<rule ref="category/jsp/errorprone.xml/JspEncoding" />