如何检查字符是否为UTF-16

时间:2013-06-10 13:32:15

标签: java validation utf-16

我想验证传出的字符串。规则是它们必须是UTF-16及以下。

如何检查字符是否是有效的UTF-16字符?我可以通过一些Java方法或正则表达式来实现吗?

感谢您的信息

1 个答案:

答案 0 :(得分:5)

Java中的任何char始终是有效的UTF-16。但是一系列字符可能无效,即代理项对(http://en.wikipedia.org/wiki/UTF-16)更高的代理字符必须跟随更低的代理字符。如果这是你的意思,那么你可以试试这个功能

static boolean isValidSequence(char[] a) {
    for (int i = 0; i < a.length; i++) {
        if (Character.isHighSurrogate(a[i])) {
            if (i < a.length - 1 && Character.isLowSurrogate(a[i + 1])) {
                i++;
            } else {
                return false;
            }
        } else if (Character.isLowSurrogate(a[i])) {
            return false;
        }
    }
    return true;
}

您还可以查看此功能http://www.java2s.com/Code/Java/Development-Class/ReturnscodetrueifthespecifiedcharactersequenceisavalidsequenceofUTF16charvalues.htm