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

标签 java validation utf-16

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

如何检查字符是否是有效的 UTF-16 字符?我可以通过某种 Java 方法或正则表达式来做到这一点吗?

感谢您的信息

最佳答案

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

关于java - 如何检查字符是否为UTF-16,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17025150/

相关文章:

ruby-on-rails - Rails4 : How to validate image size uploaded by carrierwave?

java - 日期验证,包括相应月份的天数

c++ - 弃用 header <codecvt> 替换

java - 在 RDD 方法/闭包中使用 SparkContext hadoop 配置,例如 foreachPartition

java - ActionListener 从 Jpanel 刷新 JFrame

java - Spring 不解析类路径 : in the file declaration in xml

java - Eclipse Debug模式查看实例变量值

Java SWT 用户输入验证

mysql - 在 MySQL 中将 UTF16 转换为 UTF8

string - fatal error : high- and low-surrogate code points are not valid Unicode scalar values