确定字符串中的字符是否都是特定字符集

时间:2012-10-30 17:11:40

标签: java character-encoding

我需要能够在Java中获取一个字符串,并确定其中包含的所有字符是否都在指定的字符集中(例如ISO-8859-1)。我已经四处寻找一个简单的方法来做这个(包括玩CharsetDecoder),但还没有找到一些东西。

获取字符串并确定所有字符是否在给定字符集中的最佳方法是什么?

2 个答案:

答案 0 :(得分:26)

CharsetEncoder中的类java.nio.charset提供方法canEncode来测试是否支持特定字符。

Michael基本上做了类似的事情:

CharsetforNameCharEncoding.ISO_8859_1)。newEncoder()。canEncode(“string”)

请注意,CharEncoding.ISO_8859_1依赖Apache commons,可能会被“ISO_8859_1”取代。

答案 1 :(得分:1)

我认为最简单的方法是创建一个表,其中Unicode字符可以在目标字符集编码中表示,然后测试字符串中的每个字符。对于ISO-8859系列,该表通常可以由一个或几个Unicode字符范围表示,使测试相对容易。这需要很多手工,但只需要完成一次。

如果您的Java实现支持charset,则

编辑或使用Aubin's answer。 :)