Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 确定字符串中的字符是否都是特定的字符集_Java_Character Encoding - Fatal编程技术网

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

Java 确定字符串中的字符是否都是特定的字符集,java,character-encoding,Java,Character Encoding,我需要能够获取Java中的字符串,并确定其中包含的所有字符是否都在指定的字符集中(例如ISO-8859-1)。我已经到处寻找了一种简单的方法来实现这一点(包括使用CharsetDecoder),但还没有找到什么 获取字符串并确定所有字符是否都在给定字符集中的最佳方法是什么?包中的类提供了一种测试特定字符是否受支持的方法 基本上是这样做的: .().()(“字符串”) 请注意,CharEncoding.ISO_8859_1依赖并可能被“ISO_8859_1”取代。我认为最简单的方法是建立一个表,其

我需要能够获取Java中的字符串,并确定其中包含的所有字符是否都在指定的字符集中(例如ISO-8859-1)。我已经到处寻找了一种简单的方法来实现这一点(包括使用
CharsetDecoder
),但还没有找到什么

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

包中的类提供了一种测试特定字符是否受支持的方法

基本上是这样做的:

.().()(“字符串”)


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

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


编辑:或在Java实现中支持字符集时使用。:)

@Aubin-干杯。当然,只有当Java实现支持目标时,您的解决方案才有效。(ISO-8859-1和其他标准字符集没有问题,但通常不支持其他ISO-8859编码。)太好了!这似乎正是我想要的,而且非常干净和简单。现在我觉得在花了这么多时间看了另一个类(
CharsetDecoder
)之后问这个问题很傻。谢谢我基本上是这样做的:
Charset.forName(CharEncoding.ISO_8859_1).newEncoder().canEncode(“string”)
我知道这篇文章很旧,但这是我搜索的第一个结果。对于那些想要确定字符串是否编码在IBM EBCDIC字符集之一(如IBM-1047)中的人,请使用“Cp1047”。对于IBM-737,请使用“Cp737。参考Java 7文档: