我需要确保电子邮件有效。我还需要检查其中是否有奇怪的 UTF 字符。我不喜欢用正则表达式来验证它
^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+([;.](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}){1,25})+)*$
但是我如何检查它是否为 UTF 呢?
谢谢
最佳答案
您是否想确保它是有效的? RFC 5335 section 4.1 ?
如果是这样,您只能检查 byte[]
是否是有效的 UTF-8。尝试验证 UTF-16 代码单元(Java char
s)或代码点序列是否有效的 UTF-8 是没有意义的,因为 UTF-8 是字节字符串到代码点-string 映射,UTF-16 是来自 code-units-> unicode-scalar-values 的映射。 "Unicode Encoding Forms"第 3.9 节解释了这一切。
判断 byte[]
是否是格式良好的 UTF-8 序列的最佳方法是使用内置解码器之一,例如StandardCharsets.UTF8
或 Guava 等效的 Charsets.UTF8
。
关于Java 电子邮件 UTF 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7655289/