我正在尝试在上传时验证文件的内容,并且我坚持使用Unicode编码。我不想找到不在ASCII范围内的Unicode特殊字符。我试图找到文件的内容是否包含至少一个Unicode模式,例如\ u0046。
例如,我排除了包含“script”字的任何文件,但是如果该文件包含用Unicode编写的这个单词怎么办?当然,Java在读取内容时将其解码为普通字符串,但是如果我不能依赖它呢?
因此,就我在互联网上搜索而言,我看到的Unicode字符写得像\ u0046,或者像U + 0046。基于此,我写了以下正则表达式:
(\\u|U\+)....
这意味着\ u或U +后跟四个字符。这个模式完成了我想要的,但我想知道是否还有其他方法来编写Unicode字符。它总是\ u或U +?在\ u或U +之后可以多于或少于4个字符吗?
由于
答案 0 :(得分:2)
符号U + 任意数字的十六进制数属于Unicode,在代码中的任何位置都不起作用。在java源代码中,* .properties \u
后跟四个十六进制数字是Unicode的UTF-16编码,自动解析。
搜索该模式的模式:
"\\\\u[0-9A-Fa-f]{4}"
或者String.contains on:
"\\u"
对于完整的UTF-32范围,除了Java \Uxxxxxx
之外的其他语言(六个十六进制字符)是可能的。不幸的是,Java 8并不是这样。