byte[]到String工作不正常



现在从上一个问题我得到了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(" ")。似乎一直都不是这样,字符被打印出来了。我甚至用all at once with ||但每个人都是真的"正确"。

我像这样从另一个类获得输入:

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

并将字符串转换为字节[],如下所示:

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

我需要的输出是ABC。谁能告诉我为什么我的程序是错的?

消息中的用户名是用UTF-16LE而不是ISO-8859-1编码的。

当前在字符串中看到的是来自错误解码的NUL字符。

最新更新