就在前几天,我遇到了一个奇怪的奇怪错误。我有一串必须构建的字符。作为分隔符,我与之通信的主机系统使用了 char 254。无论如何,我构建了我的字符串并将其发送到主机。在主机上,我收到 char 222 作为分隔符!在挠了挠头并深入研究之后,这似乎很奇怪
十六进制:FE,二进制:11111110
变成了
十六进制:DE,二进制:11011110
我尝试了 Locale.getDefault() 和 Locale.ENGLISH 无济于事。
难道 String.toUpperCase 的实现对所有字符都有一个掩码,除了特定的硬编码字符?
现在我正在使用以下方法来解决这个问题:
public static String toUpperCase(String input) {
char[] chars = input.toCharArray();
for(int i = 0; i < chars.length; ++i ) {
if( chars[i] > 96 && chars[i] < 123 ) {
chars[i] &= 223;
}
}
return new String(chars);
}
我的问题是我错过了什么吗?有没有更好的方法我不知道?非常感谢!