in core/src/main/java/org/apache/james/mime4j/codec/EncoderUtil.java [207:237]
public static boolean hasToBeEncoded(String text, int usedCharacters) {
if (text == null)
throw new IllegalArgumentException();
if (usedCharacters < 0 || usedCharacters > MAX_USED_CHARACTERS)
throw new IllegalArgumentException();
int nonWhiteSpaceCount = usedCharacters;
for (int idx = 0; idx < text.length(); idx++) {
char ch = text.charAt(idx);
if (ch == '\t' || ch == ' ') {
nonWhiteSpaceCount = 0;
} else {
nonWhiteSpaceCount++;
if (nonWhiteSpaceCount > 77) {
// Line cannot be folded into multiple lines with no more
// than 78 characters each. Encoding as encoded-words makes
// that possible. One character has to be reserved for
// folding white space; that leaves 77 characters.
return true;
}
if (ch < 32 || ch >= 127) {
// non-printable ascii character has to be encoded
return true;
}
}
}
return false;
}