You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#编码转码逻辑迁移Java后结果不一致问题排查求助

问题根因分析

你的Java代码的编码转换逻辑本身没有错误,结果不一致是以下两个原因导致的:

1. 遗漏了原C#逻辑中的字符串预处理步骤

你描述的C#逻辑不完整,原逻辑隐含了固定长度字段补位操作:

  • 对比输出差异:预期输出中X1GRUPPO对应的编码段e7f1c7d9e4d7d7d6之后有5个0x40(IBM037编码的空格),而你的Java输出只有1个0x40,说明原C#处理的字符串中,X1GRUPPO和后续数字段之间有5个空格,而你输入的字符串只有1个空格,少了4个补位空格,正好对应两段输出的长度差(4字节)。
  • 你当前的Java输出的数字段f7f2f6f2f7f2f7f7f2和你输入的726272772完全匹配,而预期输出的数字段对应明文是167353552,和你输入的内容不符,进一步说明你测试用的输入字符串和C#生成预期结果时的输入不一致。

2. 编码名称差异(低概率,可验证)

部分Java环境中IBM037编码的标准注册名为Cp037,可以替换写法避免编码映射错误:

// 替换原有getBytes调用
byte[] ibm037Bytes = inputStr.getBytes(Charset.forName("Cp037"));
修复方案
  1. 核对原C#代码的字符串预处理逻辑,补齐固定长度字段的补空格操作
  2. 确认C#生成预期结果时的原始输入,和Java测试用输入保持一致

内容的提问来源于stack exchange,提问作者KG_stackoverflow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 22:18:02