private String getPageEncodingForJspSyntax(JspReader jspReader,
					       Mark startMark)
	        throws JasperException {

	String encoding = null;
        String saveEncoding = null;

        jspReader.reset(startMark);

	/*
	 * Determine page encoding from directive of the form <%@ page %>,
	 * <%@ tag %>, <jsp:directive.page > or <jsp:directive.tag >.
	 */
        while (true) {
            if (jspReader.skipUntil("<") == null) {
                break;
            }
            // If this is a comment, skip until its end
            if (jspReader.matches("%--")) {
                if (jspReader.skipUntil("--%>") == null) {
                    // error will be caught in Parser
                    break;
                }
                continue;
            }
            boolean isDirective = jspReader.matches("%@");
            if (isDirective) {
	        jspReader.skipSpaces();
            }
            else {
                isDirective = jspReader.matches("jsp:directive.");
            }
            if (!isDirective) {
                continue;
            }

	    // compare for "tag ", so we don't match "taglib"
	    if (jspReader.matches("tag ") || jspReader.matches("page")) {

		jspReader.skipSpaces();
                Attributes attrs = Parser.parseAttributes(this, jspReader);
		encoding = getPageEncodingFromDirective(attrs, "pageEncoding");
                if (encoding != null) {
                    break;
                }
		encoding = getPageEncodingFromDirective(attrs, "contentType");
                if (encoding != null) {
                    saveEncoding = encoding;
                }
	    }
	}

        if (encoding == null) {
            encoding = saveEncoding;
        }

	return encoding;
    }
private String getPageEncodingForJspSyntax(JspReader jspReader,
					       Mark startMark)
	        throws JasperException {

	String encoding = null;
        String saveEncoding = null;

        jspReader.reset(startMark);

	
        while (true) {
            if (jspReader.skipUntil("<") == null) {
                break;
            }
            
            if (jspReader.matches("%--")) {
                if (jspReader.skipUntil("--%>") == null) {
                    
                    break;
                }
                continue;
            }
            boolean isDirective = jspReader.matches("%@");
            if (isDirective) {
	        jspReader.skipSpaces();
            }
            else {
                isDirective = jspReader.matches("jsp:directive.");
            }
            if (!isDirective) {
                continue;
            }

	    
	    if (jspReader.matches("tag ") || jspReader.matches("page")) {

		jspReader.skipSpaces();
                Attributes attrs = Parser.parseAttributes(this, jspReader);
		encoding = getPageEncodingFromDirective(attrs, "pageEncoding");
                if (encoding != null) {
                    break;
                }
		encoding = getPageEncodingFromDirective(attrs, "contentType");
                if (encoding != null) {
                    saveEncoding = encoding;
                }
	    }
	}

        if (encoding == null) {
            encoding = saveEncoding;
        }

	return encoding;
    }
private String getPageEncodingForJspSyntax ( JspReader jspReader , Mark startMark ) throws JasperException { String encoding = null ; String saveEncoding = null ; jspReader . reset ( startMark ) ; /*
	 * Determine page encoding from directive of the form <%@ page %>,
	 * <%@ tag %>, <jsp:directive.page > or <jsp:directive.tag >.
	 */ while ( true ) { if ( jspReader . skipUntil ( "<" ) == null ) { break ; } // If this is a comment, skip until its end if ( jspReader . matches ( "%--" ) ) { if ( jspReader . skipUntil ( "--%>" ) == null ) { // error will be caught in Parser break ; } continue ; } boolean isDirective = jspReader . matches ( "%@" ) ; if ( isDirective ) { jspReader . skipSpaces ( ) ; } else { isDirective = jspReader . matches ( "jsp:directive." ) ; } if ( ! isDirective ) { continue ; } // compare for "tag ", so we don't match "taglib" if ( jspReader . matches ( "tag " ) || jspReader . matches ( "page" ) ) { jspReader . skipSpaces ( ) ; Attributes attrs = Parser . parseAttributes ( this , jspReader ) ; encoding = getPageEncodingFromDirective ( attrs , "pageEncoding" ) ; if ( encoding != null ) { break ; } encoding = getPageEncodingFromDirective ( attrs , "contentType" ) ; if ( encoding != null ) { saveEncoding = encoding ; } } } if ( encoding == null ) { encoding = saveEncoding ; } return encoding ; }
/*
Determines page source encoding for page or tag file in JSP syntax,
by reading (in this order) the value of the 'pageEncoding' page
directive attribute, or the charset value of the 'contentType' page
directive attribute.

@return The page encoding, or null if not found
/ * Determines page source encoding for page or tag file in JSP syntax by reading ( in this order ) the value of the pageEncoding page directive attribute or the charset value of the contentType page directive attribute .