java - 什么设置了 Java 中的默认字节数组编码?
问题描述
我的团队在服务器上有一些 java ETL 工具。其中一个工具具有以下代码:
StringBuilder responseContents = new StringBuilder();
byte[] buffer = new byte[2048];
int read = 0;
try
{
if (zipInputStream.getNextEntry() != null)
{
while ((read = zipInputStream.read(buffer, 0, 2048)) >= 0)
{
responseContents.append(new String(buffer,
0,
read,
StandardCharsets.UTF_8));
}
}
}
zipInputStream 包含以 UTF-8 编码的 JSON。在 java 中,字符串以 UTF-16 编码。最初,StandardCharsets.UTF_8 没有传递给字符串构造函数。我们遇到了 JSON 包含一些韩语字符的情况,并且在我的机器上(没有显式 charsets 参数)正确假设了字节的编码方案,但是当在服务器上运行相同的 jar 可执行文件时,假设不正确并且韩文字符转换不正确。我的机器和服务器都没有设置 NLS_LANG 环境变量,并且两台机器都运行相同的 java 版本。哪些变量会更改 Java 中的“默认/假定”字节数组编码?
解决方案
推荐阅读
- android - CardStackListener 不提供任何回调
- excel - 将字母添加到具有不同值的行中
- ios - tvOS - 由于playbackBufferEmpty 导致实时视频流停止并且永远不会恢复
- c# - 如何转换列表
数据数组到我可以用于位掩码的东西? - php - 如何在 docker 上同时运行多个项目
- node.js - node_redis(npm redis模块)是否支持redis集群模式或者我们必须使用ioredis?
- matlab - 使用 fplot 函数时如何矢量化?
- r - 将字符串与 for 循环 -R 配对
- json - 使用“JSON”列的 Laravel 5 关系
- javascript - 使用媒体查询的 css 图像交换移动与桌面