{"record":{"id":"2647ae099295b26a","repo":"apache/seatunnel","slug":"unsupported-encoding-exists-in-the-parameter","errorCode":null,"errorMessage":"Unsupported encoding exists in the parameter.","messagePattern":"Unsupported encoding exists in the parameter\\.","errorType":"exception","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"warning","filePath":"seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/utils/RestUtil.java","lineNumber":66,"sourceCode":"    }\n\n    public static void buildRequestParams(Map<String, String> requestParams, String uri) {\n        requestParams.put(RestConstant.JOB_ID, null);\n        requestParams.put(RestConstant.IS_START_WITH_SAVE_POINT, String.valueOf(false));\n        uri = StringUtil.stripTrailingSlash(uri);\n        if (!uri.contains(\"?\")) {\n            return;\n        }\n        int indexEnd = uri.indexOf('?');\n        try {\n            for (String s : uri.substring(indexEnd + 1).split(\"&\")) {\n                String[] param = s.split(\"=\");\n                requestParams.put(param[0], URLDecoder.decode(param[1], \"UTF-8\"));\n            }\n        } catch (IndexOutOfBoundsException e) {\n            throw new IllegalArgumentException(\"Invalid Params format in Params.\");\n        } catch (UnsupportedEncodingException e) {\n            throw new IllegalArgumentException(\"Unsupported encoding exists in the parameter.\");\n        }\n        if (Boolean.parseBoolean(requestParams.get(RestConstant.IS_START_WITH_SAVE_POINT))\n                && requestParams.get(RestConstant.JOB_ID) == null) {\n            throw new IllegalArgumentException(\"Please provide jobId when start with save point.\");\n        }\n    }\n\n    public static Config buildConfig(JsonNode jsonNode) {\n        Map<String, Object> objectMap = JsonUtils.toMap(jsonNode);\n        return ConfigBuilder.of(objectMap);\n    }\n\n    public static List<Tuple2<Map<String, String>, Config>> buildConfigList(JsonNode jsonNode) {\n        return StreamSupport.stream(jsonNode.spliterator(), false)\n                .filter(JsonNode::isObject)\n                .map(\n                        node -> {\n                            Map<String, Object> nodeMap = JsonUtils.toMap(node);","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/apache/seatunnel/blob/cf67b549a7a6c35fa0beb12d83c62892427ea919/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/utils/RestUtil.java#L48-L84","documentation":"Thrown by RestUtil.buildRequestParams when URLDecoder.decode(param[1], \"UTF-8\") throws UnsupportedEncodingException. Since UTF-8 is always a supported charset on standard JVMs, this is effectively unreachable in practice, but the library defends the API and surfaces it as an IllegalArgumentException naming a problem with parameter encoding.","triggerScenarios":"Theoretically raised while URL-decoding any query parameter value in buildRequestParams if the JVM does not support the UTF-8 charset — e.g. running on a stripped/non-standard JVM or unusual JRE image without UTF-8 support.","commonSituations":"Running SeaTunnel on a minimal or exotic JRE distribution, custom JVM builds with a limited charset provider, or container images missing locale/charset data.","solutions":["Run on a standard JDK/JRE (JDK 8+) where UTF-8 is guaranteed supported","Verify the JVM's supported charsets (java.nio.charset.Charset.availableCharsets() contains UTF-8)","Pre-decode parameters or use java.net.URLDecoder with StandardCharsets.UTF_8 in custom forks to remove the checked exception path","If seen, report the environment — this indicates a broken JVM installation"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if (!java.nio.charset.Charset.availableCharsets().containsKey(\"UTF-8\")) {\n  throw new IllegalStateException(\"JVM does not support UTF-8; REST parameter decoding will fail\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  restUtil.buildRequestParams(uri);\n} catch (IllegalArgumentException e) {\n  if (e.getMessage().contains(\"Unsupported encoding\")) {\n    log.error(\"JVM charset environment broken; check JVM installation\");\n  } else throw e;\n}","preventionTips":["Run on a standard, unmodified JDK 8+ distribution","Keep container images complete (do not strip charset//locale data)","Verify -Dfile.encoding and available charsets during environment setup","This error on a normal JVM signals a broken environment; investigate the JVM first"],"tags":["rest","url-decoding","charset"],"backgroundTag":"invalid-argument-value","analyzedSha":"cf67b549a7a6c35fa0beb12d83c62892427ea919","analyzedAt":"2026-09-10T21:44:55.265Z","contentChangedAt":"2026-09-10T21:44:55.265Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}