关于java字符集的问题(bytes[])。在线等,急。十分感谢

Lixin19821010 2011-10-21 12:12:27
byte[] des = new byte[998 + 139 + 16];
byte[] tmp = new byte[139];
byte[] tmpbyte = commarea.getBytes("935");
System.arraycopy(tmpbyte, 0, tmp, 0, tmpbyte.length);
System.arraycopy(tmp, 0, des, 0, 139);
报文拼接整个过程以下部分略
用这种方式拼接des报文。
对于有的字符串,例如字符长度为5,拼接的目标BYTE流长度为20。那么BYTE流前五位为字符串,后面15位为空。
类似于:“47703 ”。这个是想要的。

但是有的字符串,同样字符长度为5,拼接的目标BYTE流长度为20。通过这种方式拼接,会在后面15位形成乱码。
类似于:“47703口口口口口口口口口口口口口口口”

请问,该如何才能去掉后面的“口口口口口口口口口口口口口口口”。得到“47703 ”这种想要的格式。

---------------------------------------------------------------------------
另外,将“47703口口口口口口口口口口口口口口口”写入本地的文本文件中(如:c:/sql.txt)。
在c:/sql.txt中,看到的格式为“47703 ”。

----------------------------------------------------------------------------
编辑器的格式为GB18030
...全文
52 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Lixin19821010 2011-10-25
  • 打赏
  • 举报
回复
问题已经解决。如下:
tmp = new byte[40];
tmpbyte = zjhm.getBytes("935");
System.arraycopy(tmpbyte, 0, tmp, 0, tmpbyte.length);
System.arraycopy(tmp, 0, des, 139 + 22, 40);
tmpbyte = " ".getBytes("935");
for(int i = 139 +22 +zjhm.getBytes("935").length ; i < 139 + 22 + 40; i++)
{
System.arraycopy(tmpbyte, 0, des, i, 1);
}
通过用空格(" ")字符串的比特流,补到是"口口口………………"的地方。
这种方式构造出来的比特流,是符合要求的。谢谢各位。
wquanchao 2011-10-21
  • 打赏
  • 举报
回复
编辑器的格式为GB18030,达不到要求,你就不能换一种方式
huntor 2011-10-21
  • 打赏
  • 举报
回复
口口口 不是乱码,是使用的字体里没有这些字符。

乱码是一堆无意义的乱七八糟的字符组合。
Lixin19821010 2011-10-21
  • 打赏
  • 举报
回复
ECLIPSE所能提供的方式,都换了。
UTF8,GB10830,UTF16,ASCII等。

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧