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