java如何对一个字符串生成唯一的编码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java如何对一个字符串生成唯一的编码相关的知识,希望对你有一定的参考价值。

JAVA类库中可以使用UUID方法,来生成唯一的数字的一串数字编号,也就是订单号。
UUID.randomUUID().toString().replaceAll("-", "");通过上述方法就可以返回一串数字字符串。
参考技术A 生成MD5码 MD5对每个字符串或者文件都是唯一的

如何查看字符编码类型

一般来说要对字符编码格式进行判断就是根据各种编码两个字节的起止范围作判断,如果符合起止范围就认为是某种字符编码。但理论上来说不同的字符编码有可能会采用同样的字节范围,所以这种方法并不能完全把某个双字节字符对应到唯一的一种编码格式上(所以说如果大家都用
utf-8 ,整个世界就清静了)。这种伴随着计算机发展而衍生出来的各种双字节语言字符编码只能是尽量想办法处理,但难有完美解决方案。

CnCharsetChecker.Java 源代码:

public class CnCharsetChecker    
    /* Support for Chinese(GB2312) characters */  
    // #define isgb2312head(c) (0xa1<=(uchar)(c) && (uchar)(c)<=0xf7)   
    // #define isgb2312tail(c) (0xa1<=(uchar)(c) && (uchar)(c)<=0xfe)   
    public static boolean isGB2312( byte head,byte tail )   
        int iHead = head & 0xff;   
        int iTail = tail & 0xff;   
        return ((iHead>=0xa1 && iHead<=0xf7 &&    
                 iTail>=0xa1 && iTail<=0xfe) ? true : false);   
       
    /* Support for Chinese(GBK) characters */  
    // #define isgbkhead(c) (0x81<=(uchar)(c) && (uchar)(c)<=0xfe)   
    // #define isgbktail(c) ((0x40<=(uchar)(c) && (uchar)(c)<=0x7e)    
    //                      || (0x80<=(uchar)(c) && (uchar)(c)<=0xfe))   
    public static boolean isGBK( byte head,byte tail )   
        int iHead = head & 0xff;   
        int iTail = tail & 0xff;   
        return ((iHead>=0x81 && iHead<=0xfe &&    
                 (iTail>=0x40 && iTail<=0x7e ||    
                  iTail>=0x80 && iTail<=0xfe)) ? true : false);   
       
    /* Support for Chinese(BIG5) characters */  
    // #define isbig5head(c) (0xa1<=(uchar)(c) && (uchar)(c)<=0xf9)   
    // #define isbig5tail(c) ((0x40<=(uchar)(c) && (uchar)(c)<=0x7e)   
    //                       || (0xa1<=(uchar)(c) && (uchar)(c)<=0xfe))   
    public static boolean isBIG5( byte head,byte tail )   
        int iHead = head & 0xff;   
        int iTail = tail & 0xff;   
        return ((iHead>=0xa1 && iHead<=0xf9 &&    
                 (iTail>=0x40 && iTail<=0x7e ||    
                  iTail>=0xa1 && iTail<=0xfe)) ? true : false);   
       
  
    public static void main(String[] args)   
        String sGB = "爱";   
        String sGBK = "爱";   
        String sBIG5 = "稲";   
        byte[] sChars = null;   
        sChars = sGB.getBytes();   
        System.out.println(sGB+" is "+   
            CnCharsetChecker.isGB2312(sChars[0],sChars[1])+" for GB2312;"+   
            CnCharsetChecker.isGBK(sChars[0],sChars[1])+" for GBK,"+   
            CnCharsetChecker.isBIG5(sChars[0],sChars[1])+" for BIG5");   
        sChars = sGBK.getBytes();   
        System.out.println(sGBK+" is "+   
            CnCharsetChecker.isGB2312(sChars[0],sChars[1])+" for GB2312;"+   
            CnCharsetChecker.isGBK(sChars[0],sChars[1])+" for GBK,"+   
            CnCharsetChecker.isBIG5(sChars[0],sChars[1])+" for BIG5");   
        sChars = sBIG5.getBytes();   
        System.out.println(sBIG5+" is "+   
            CnCharsetChecker.isGB2312(sChars[0],sChars[1])+" for GB2312;"+   
            CnCharsetChecker.isGBK(sChars[0],sChars[1])+" for GBK,"+   
            CnCharsetChecker.isBIG5(sChars[0],sChars[1])+" for BIG5");   
       

参考技术A 可以通过以下方法来进行编码格式判断,输入一个字符串,之后返回字符串编码类型。
public static String getEncoding(String str)
String encode = "GB2312";
try
if (str.equals(new String(str.getBytes(encode), encode))) //判断是不是GB2312
String s = encode;
return s; //是的话,返回逗GB2312逗,以下代码同理

catch (Exception exception)

encode = "ISO-8859-1";
try
if (str.equals(new String(str.getBytes(encode), encode))) //判断是不是ISO-8859-1
String s1 = encode;
return s1;

catch (Exception exception1)

encode = "UTF-8";
try
if (str.equals(new String(str.getBytes(encode), encode))) //判断是不是UTF-8
String s2 = encode;
return s2;

catch (Exception exception2)

encode = "GBK";
try
if (str.equals(new String(str.getBytes(encode), encode))) //判断是不是GBK
String s3 = encode;
return s3;

catch (Exception exception3)

return ""; //如果都不是,说明输入的内容不属于常见的编码格式。
本回答被提问者采纳
参考技术B 包括chrome浏览器、360极速浏览器等。方法:如图例,点击浏览器右侧菜单图标,然后依次将鼠标移到“工具”→“编码”即可查看或更改当前页面的编码模式。
1、firefox(Gecko内核)
方法:点击浏览器左上角“Firefox”菜单,然后依次点击“Web开发者”→“字符编码”,即可看到当前页面的编码模式。
2、safari(webkit内核)
点击浏览器右侧“打开当前页面菜单”图标,然后打开“文本编码”即可看到编码模式。
在浏览器上如何查看或更改页面编码模式
3、类IE浏览器
包括IE浏览器、搜狗浏览器、360浏览器等。如图,点击浏览器上方菜单栏中“查看”,然后将鼠标移到“编码”。
ie浏览器还有一种简单方法,即:在当前页面右键→“编码”即可。

以上是关于java如何对一个字符串生成唯一的编码的主要内容,如果未能解决你的问题,请参考以下文章

Java:如何从字符串生成 PrivateKey?

java怎么生成一个唯一的只有数字的订单号

如何对URL字符串进行百分号编码

关于 JAVA 源代码生成 API 的编码问题

在java语言中如何随机地生成一个字符串

如何对数字进行编码,以便微小的变化导致非常不同的编码?