我需要能够在Java 中获取一个字符串,并确定其中包含的所有字符是否都在一个指定的字符集中(例如ISO-8859-1)。我已经环顾四周寻找一种简单的方法来做到这一点(包括玩弄 a CharsetDecoder
),但还没有找到一些东西。
获取字符串并确定所有字符是否都在给定字符集中的最佳方法是什么?
我需要能够在Java 中获取一个字符串,并确定其中包含的所有字符是否都在一个指定的字符集中(例如ISO-8859-1)。我已经环顾四周寻找一种简单的方法来做到这一点(包括玩弄 a CharsetDecoder
),但还没有找到一些东西。
获取字符串并确定所有字符是否都在给定字符集中的最佳方法是什么?
java.nio.charset包中的CharsetEncoder类提供了一个方法canEncode来测试是否支持特定字符。
迈克尔基本上做了这样的事情:
Charset
. forName
( CharEncoding.ISO_8859_1
)。newEncoder
()。canEncode
(“细绳”)
请注意,CharEncoding.ISO_8859_1
依赖于Apache commons,可能会被“ISO_8859_1”替换。
我认为最简单的方法是创建一个表,其中可以用目标字符集编码表示哪些 Unicode 字符,然后测试字符串中的每个字符。对于 ISO-8859 系列,表格通常可以用一个或几个范围的 Unicode 字符表示,使测试相对容易。这是很多手工工作,但只需要完成一次。
编辑:如果您的 Java 实现支持字符集,则使用Aubin 的答案。:)