Convert International String to \u Codes in java

后端 未结 12 2028
离开以前
离开以前 2020-11-29 02:53

How can I convert an international (e.g. Russian) String to \\u numbers (unicode numbers)
e.g. \\u041e\\u041a for OK ?

12条回答
  •  抹茶落季
    2020-11-29 03:31

    Just some basic Methods for that (inspired from native2ascii tool):

    /**
     * Encode a String like äöü to \u00e4\u00f6\u00fc
     * 
     * @param text
     * @return
     */
    public String native2ascii(String text) {
        if (text == null)
            return text;
        StringBuilder sb = new StringBuilder();
        for (char ch : text.toCharArray()) {
            sb.append(native2ascii(ch));
        }
        return sb.toString();
    }
    
    /**
     * Encode a Character like ä to \u00e4
     * 
     * @param ch
     * @return
     */
    public String native2ascii(char ch) {
        if (ch > '\u007f') {
            StringBuilder sb = new StringBuilder();
            // write \uffffdd
            sb.append("\\u");
            StringBuffer hex = new StringBuffer(Integer.toHexString(ch));
            hex.reverse();
            int length = 4 - hex.length();
            for (int j = 0; j < length; j++) {
                hex.append('0');
            }
            for (int j = 0; j < 4; j++) {
                sb.append(hex.charAt(3 - j));
            }
            return sb.toString();
        } else {
            return Character.toString(ch);
        }
    }
    

提交回复
热议问题