byte[] 到 String 无法正常工作
byte[] to String not working correctly
现在从上一个问题我得到了 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(" ")
检查过。
似乎一直都不是这种情况,并且打印了字符。我什至一次都用了||不过大家真的是"correct".
我从另一个人那里得到这样的输入 class:
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 字符。
现在从上一个问题我得到了 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(" ")
检查过。
似乎一直都不是这种情况,并且打印了字符。我什至一次都用了||不过大家真的是"correct".
我从另一个人那里得到这样的输入 class:
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 字符。