我有一个接收自由文本的服务,比如名字,姓氏,地址等,如果发送的字符不属于windows 1252字符集,我想抛出一个错误,但我不知道如何正确地这样做。我想的是一个正则表达式,但不确定这是否是最好的选择。
正则表达式是letters from cp1252加上任何其他的字母\\w
,就像这样:
String test = "ŠŒŽšœžŸÀÁÂà ÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝ Þßàáâãäåæçèéêëìíîïð ñòóôõöøùúûüýþÿ asvsdf QWESA 1234 ÜüËëÄäÖö";
System.out.println(test.matches("[ŠŒŽšœžŸÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ\\w"
+ "\\d\\s\\.]+"));
我不需要检测编码本身,只要它不属于字符集。
2条答案
按热度按时间lskq00tm1#
我的建议代码:
y53ybaqx2#
你需要检查它的Unicode代码点是否在0x20到0x7E和0xA0到0xFF的范围之外,这个范围涵盖了Windows 1252字符集中所有可打印的ASCII字符和扩展字符,不包括EN破折号。