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

Hi @jingxiang ,

We have checked this further and found that the Docker image uses a minimized Java JDK runtime. This is done intentionally to reduce the overall Docker image size and footprint.

Because it is a minimized Java runtime, it does not contain all the modules that are included in a complete JDK installation. In this case, the jdk.charsets module is not included in the Docker runtime. This is why the SQL Server connection is failing when the SQL Server instance reports the zh_CN collation / MS936 (GBK) codepage.

This also explains the difference between your two installations. In the JAR-based installation, a complete Java JDK was installed/configured manually, so the required charset support is available there. The same datasource configuration therefore works with the JAR installation but fails with the current Docker runtime.

Our product team is currently reviewing this and we are working on the appropriate supported solution. We expect to have an update within approximately a week.

There is one additional point we would like to understand from your environment.

The same minimized Java runtime is used by many of our Docker customers, and SQL Server connections generally work successfully with it. Therefore, we would like to understand whether there is anything specific about your SQL Server environment that is causing the MS936 charset to be required.

Could you please provide the following details, if possible?

  • SQL Server version
  • Database/server collation
  • Whether the server/database was configured with any non-default language or collation settings
  • Any other specific character-set, language, or localization configuration applied to the SQL Server installation

From the logs you shared, we can see that your SQL Server is using the zh_CN Windows collation, which maps to the MS936 codepage. This appears to be the specific difference that triggers the missing charset support in the minimized Java runtime.

This information will also help us verify why the standard SQL Server configurations used by other Docker customers work with the current runtime while this particular configuration requires the additional charset module.

We will keep you updated once our product team completes the verification.

Thank you

Hi, these are details of my SQL Server database.

SELECT @@VERSION;
image

SELECT SERVERPROPERTY(‘Collation’) AS ServerCollation;
image

SELECT SERVERPROPERTY(‘LCID’) AS LCID, SERVERPROPERTY(‘Collation’) AS Collation;
image

Hi Jingxiang,

Thank you for providing the SQL Server details.

We have reviewed the information and confirmed that your SQL Server is running SQL Server 2025 (17.0.1000.7) and the server collation is Chinese_PRC_CI_AS.

This is consistent with the zh_CN / MS936 codepage reported in the connection error. The information helps us confirm that the SQL Server collation is the specific environmental difference that causes the Microsoft SQL Server JDBC driver to require the MS936/GBK charset support.

We have shared these details with our product team and will continue the investigation from the Docker/JRE side.

We will update you once we have completed the verification and have the appropriate supported solution.

Thank you