SQL Server connection fails because jdk.charsets is missing in Docker image

Hello Helical Insight Team,

I am using Helical Insight 6.2.1 GA with the Docker image:hiee/helicalinsight:carbon-j25t11.

When testing a Microsoft SQL Server datasource connection, I receive the following error: Windows collation zh_CN is not supported by this driver. Caused by: java.io.UnsupportedEncodingException: Codepage MS936 is not supported by the Java environment.

I checked the Java runtime inside the container: docker compose exec -T hiee java --describe-module jdk.charsets.

The result is: jdk.charsets not found.

It appears that the Java runtime in this Docker image does not include the jdk.charsets module required for the SQL Server MS936/Chinese collation.

Could you please advise how to resolve this issue? Is there an updated Docker image that includes jdk.charsets, or another officially supported solution?

Thank you. The attachment is the error message I encountered.

SQLServerException.txt (33.1 KB)

Hello,

When we connect to SQLServer, there could be two methods of connecting. One is Windows authentication based. Second is using the JDBC connection method. Can you verify or share snapshot of the datasources page how you are connecting. You can mask the sensitive information.

image

Hello, this is the information on my data source page. With the same configuration, I can connect successfully in the Helical installation using the JAR package. However, the same configuration results in an error in the Docker-based Helical installation.

| 2026-08-10 02:19:45 ERROR ServiceUtils:135 - An exception has taken place. The stackTrace is
hiee-1 | com.helicalinsight.efw.exceptions.JdbcConnectionException: Could not obtain JDBC Connection.
hiee-1 | at com.helicalinsight.datasource.managed.ConnectionProviderUtility.getConnection(SourceFile:48) ~[hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.datasource.managed.PlainJdbcConnectionProvider.a(SourceFile:73) ~[hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.datasource.managed.PlainJdbcConnectionProvider.newConnection(SourceFile:42) ~[hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.datasource.managed.TestConnectionProvider.testConnection(SourceFile:1074) ~[hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.efw.components.GlobalConnectionsTester.executeComponent(SourceFile:45) ~[hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.efw.serviceframework.ServiceUtils.a(SourceFile:202) [hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.efw.serviceframework.ServiceUtils.executeService(SourceFile:95) [hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.efw.serviceframework.ServiceUtils.executeService(SourceFile:50) [hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.adhoc.services.DataSourceConnectionTester.doService(SourceFile:23) [hi-adhoc-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.efw.serviceframework.ServiceManager.a(SourceFile:497) [hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.efw.serviceframework.ServiceManager.getResult(SourceFile:253) [hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.efw.controller.EfwServicesController.a(SourceFile:142) [hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.parallelprocessor.ThreadPoolTaskExecutorImpl.a(SourceFile:126) [hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at com.helicalinsight.parallelprocessor.ThreadPoolTaskExecutorImpl$2.call(SourceFile:173) [hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at java.util.concurrent.FutureTask.run(Unknown Source) [?:?]
hiee-1 | at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) [?:?]
hiee-1 | at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [?:?]
hiee-1 | at java.lang.Thread.run(Unknown Source) [?:?]
hiee-1 | Caused by: com.microsoft.sqlserver.jdbc.SQLServerException: Windows collation zh_CN is not supported by this driver. ClientConnectionId:f97a34bb-062e-4981-81a6-5cec298e3809
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2887) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.processEnvChange(SQLServerConnection.java:3732) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEnvChange(tdsparser.java:187) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:59) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:5028) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3660) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:94) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3619) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7194) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2930) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2456) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2103) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1950) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1162) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:735) ~[?:?]
hiee-1 | at com.helicalinsight.datasource.DriverShim.connect(SourceFile:74) ~[hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at java.sql.DriverManager.getConnection(Unknown Source) ~[java.sql:?]
hiee-1 | at java.sql.DriverManager.getConnection(Unknown Source) ~[java.sql:?]
hiee-1 | at com.helicalinsight.datasource.managed.ConnectionProviderUtility.getConnection(SourceFile:38) ~[hi-core-6.2.1-GA-small.jar:?]
hiee-1 | … 17 more
hiee-1 | Caused by: java.io.UnsupportedEncodingException: Windows collation zh_CN is not supported by this driver.
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLCollation.encodingFromLCID(SQLCollation.java:363) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLCollation.(SQLCollation.java:93) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.processEnvChange(SQLServerConnection.java:3730) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEnvChange(tdsparser.java:187) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:59) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:5028) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3660) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:94) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3619) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7194) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2930) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2456) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2103) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1950) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1162) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:735) ~[?:?]
hiee-1 | at com.helicalinsight.datasource.DriverShim.connect(SourceFile:74) ~[hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at java.sql.DriverManager.getConnection(Unknown Source) ~[java.sql:?]
hiee-1 | at java.sql.DriverManager.getConnection(Unknown Source) ~[java.sql:?]
hiee-1 | at com.helicalinsight.datasource.managed.ConnectionProviderUtility.getConnection(SourceFile:38) ~[hi-core-6.2.1-GA-small.jar:?]
hiee-1 | … 17 more
hiee-1 | Caused by: java.io.UnsupportedEncodingException: Codepage MS936 is not supported by the Java environment.
hiee-1 | at com.microsoft.sqlserver.jdbc.Encoding.checkSupported(SQLCollation.java:596) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLCollation$WindowsLocale.getEncoding(SQLCollation.java:341) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLCollation.encodingFromLCID(SQLCollation.java:359) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLCollation.(SQLCollation.java:93) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.processEnvChange(SQLServerConnection.java:3730) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.TDSTokenHandler.onEnvChange(tdsparser.java:187) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.TDSParser.parse(tdsparser.java:59) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.sendLogon(SQLServerConnection.java:5028) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.logon(SQLServerConnection.java:3660) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.access$000(SQLServerConnection.java:94) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection$LogonCommand.doExecute(SQLServerConnection.java:3619) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.TDSCommand.execute(IOBuffer.java:7194) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.executeCommand(SQLServerConnection.java:2930) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2456) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2103) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1950) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1162) ~[?:?]
hiee-1 | at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:735) ~[?:?]
hiee-1 | at com.helicalinsight.datasource.DriverShim.connect(SourceFile:74) ~[hi-core-6.2.1-GA-small.jar:?]
hiee-1 | at java.sql.DriverManager.getConnection(Unknown Source) ~[java.sql:?]
hiee-1 | at java.sql.DriverManager.getConnection(Unknown Source) ~[java.sql:?]
hiee-1 | at com.helicalinsight.datasource.managed.ConnectionProviderUtility.getConnection(SourceFile:38) ~[hi-core-6.2.1-GA-small.jar:?]
hiee-1 | … 17 more

Hello @jingxiang

Thank you for providing the detailed error logs and the additional information.

We have reviewed the error and the behavior you described between the JAR-based and Docker-based installations.

The error is related to the Java runtime used inside the Docker image. The SQL Server database is using a Chinese Windows collation that requires the MS936/GBK character encoding. The Microsoft SQL Server JDBC driver relies on the Java runtime for this character-set conversion, and the Docker runtime currently appears not to include the required extended charset support.

This is also consistent with the following error in the log:

Codepage MS936 is not supported by the Java environment.

and with your check showing that the jdk.charsets module is not available inside the container.

The fact that the same datasource configuration works successfully with the JAR-based installation further indicates that the datasource configuration itself is not the issue; the difference is the Java runtime environment used by the Docker installation.

We are checking the Docker image/runtime configuration to determine the appropriate supported solution, including whether an updated Docker image with the required charset support is available.

As an additional verification, please run the following command inside the Docker container and share the output with us:

docker compose exec -T hiee java --list-modules | grep jdk.charsets

We will use this information along with the existing logs to confirm the runtime configuration and provide the appropriate resolution.

Regards,
Helical Insight Team

Snipaste_2026-08-11_09-50-37

Hello Jingxiang,

Thank you for sharing the output.

This confirms that the jdk.charsets module is not present in the Java runtime of the Docker container. We are reviewing the Docker image configuration on our side to determine the appropriate supported resolution for this issue.

We will get back to you once we have completed the verification and have an update on the recommended solution.

Thank you,
Helical Insight Team