UNICODE与ASCII的区别(题目:判断字符串的字符是否唯一)


首先要了解UNICODE和ASCII的区别

来源:https://blog.csdn.net/lx697/article/details/5914417

1.ASCII的特点
  • ASCII 是用来表示英文字符的一种编码规范。每个ASCII字符占用1 个字节,因此,ASCII 编码可以表示的最大字符数是255(00H—FFH)。这对于英文而言,是没有问题的,一般只什么用到前128个(00H--7FH,最高位为0)。而最高位为1 的另128 个字符(80H—FFH)被称为“扩展ASCII”,一般用来存放英文的制表符、部分音标字符等等的一些其它符号。
  • 但是对于中文等比较复杂的语言,255个字符显然不够用。于是,各个国家纷纷制定了自己的文字编码规范,其中中文的文字编码规范叫做“GB2312—80”, 它是和ASCII 兼容的一种编码规范, 其实就是利用扩展ASCII没有真正标准化这一点,把一个中文字符用两个扩展ASCII 字符来表示,以区分ASCII 码部分。
  • 但是这个方法有问题,最大的问题就是中文的文字编码和扩展ASCII 码有重叠。而很多软件利用扩展ASCII 码的英文制表符来画表格,这样的软件用到中文系统中,这些表格就会被误认作中文字符,出现乱码。另外,由于各国和各地区都有自己的文字编码规则,它们互相冲突,这给各国和各地区交换信息带来了很大的麻烦。
2.UNICODE的产生
  • 要真正解决这个问题,不能从扩展ASCII 的角度入手,UNICODE作为一个全新的编码系统应运而生,它可以将中文、法文、德文……等等所有的文字统一起来考虑,为每一个文字都分配一个单独的编码。
3.什么是UNICODE
  • Unicode与ASCII一样也是一种字符编码方法,它占用两个字节(0000H—FFFFH),容纳65536 个字符,这完全可以容纳全世界所有语言文字的编码。在Unicode 里,所有的字符都按一个字符来处理, 它们都有一个唯一的Unicode 码。
4.使用UNICODE的好处
  • 使用Unicode 编码可以使您的工程同时支持多种语言, 使您的工程国际化。即在不同语言的系统下不至于产生乱码。

由此得到可以根据总长度定一个界限,例如如果是ASCII有128个字符(注意并不是总成只有128,是255,只不过后面基本不会用到),可以如下:

public class UniqueChars {
    boolean isUniqueChars(String str) {
        if (str.length() > 128 ) {
            return false;
        }
        boolean[] char_set = new boolean[128];
        for (int i = 0; i < str.length(); i++) {
            int val = str.charAt(i);
            if (char_set[val]) {
                // 在子符串中已经找到该字符
                return false;
            } else {
                char_set[val] = true;
            }
        }
        return true;
    }
    @Test
    public void isUniqueCharsTest() {
        String str = new String("11");
        boolean flag = isUniqueChars(str);
        System.out.println(flag);
    }
}


不全。详细看:

https://blog.csdn.net/weixin_39532019/article/details/118777299


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM