Java String.toUpperCase()

Ara*_*rif 2 java string uppercase

就在前几天,我遇到了一个奇怪的怪虫.我有一串我必须建立的角色.作为主机系统的分隔符,我正在使用char 254进行通信.无论如何,我构建了我的字符串并将其发送给主机.在主机上我收到了char 222作为分隔符!在抓了我的头,然后深入地看着它似乎很奇怪

十六进制:FE,二进制:11111110

正在变成

hex: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);

}
Run Code Online (Sandbox Code Playgroud)

我的问题是我错过了什么?有没有更好的方式我不知道?谢谢你!

Jon*_*oni 7

Unicode字符254是小写的刺,þ在冰岛语中使用的字母大致代表"th"声音.它的大写版本是字符222,大写刺Þ.你期望会发生什么?