On org.apache.xerces.readers.MIME2Java, there is this one line: s_enchash.put("MS_Kanji", "SJIS"); But, that s_enchash hashtable is used in convert method in the following manner: return (String)s_enchash.get(mimeCharsetName.toUpperCase()); Because all mimeCharsetName is set to upper case (thus, converting "MS_Kanji" to "MS_KANJI"), then if the XML is having charset="MS_Kanji", an UnsupportedCharacterEncoding would be thrown.