byte []到String无法正常工作

时间:2016-10-10 07:01:11

标签: java arrays string char converter

现在从上一个问题我得到了NTLM握手工作。现在,当我从byte []转换为String时,我无法过滤掉空格。我的结果如下:

CHAR: A
CHAR:
CHAR: B
CHAR: 
CHAR: C

USERNAME: A B C

这是产生此输出的代码:

username = new String( token, offset, length, "ISO-8859-1" );
username = username.trim();

char[] test = username.toCharArray();
for ( char t : test )
{
  if ( !Character.isWhitespace( t ) )
  {
    System.out.println( "CHAR: " + t );
  }
}
System.out.println( "USERNAME: " + username );

我甚至使用String.valueOf(t).isEmpty()String.valueOf(t).equals(" ")进行了检查。 似乎并非如此,并且打印出字符。我甚至用||一次性使用了所有但每个人都非常“正确”。

我从另一个类中得到了这样的输入:

String auth = httpServletRequest.getHeader( "Authorization" );
String username = authService.getUserNameFromNTLM( auth.substring( 5 ));

并将String转换为byte [],如下所示:

byte[] token = Base64.getDecoder().decode( msg );

我需要的输出是ABC。有人能告诉我为什么我的手术错了吗?

1 个答案:

答案 0 :(得分:1)

邮件中的用户名以UTF-16LE编码,而不是ISO-8859-1。

您目前在字符串中看到的是源自错误解码的NUL字符。