在提出任何要求之前,我已经签出了:
Determine if characters in a string are all of a specific character set
...并尝试了选定的答案(使用UTF-8):
StandardCharsets.UTF_8.newEncoder().canEncode(input);
输入的是字符串?
我也尝试了
CharsetDecoder
,但没有任何有价值的结果(总是被确认为有效)
答案 0 :(得分:2)
Java String
采用UTF-16格式:
字符串代表 UTF-16格式的字符串,其中补充字符由代理对表示(有关更多信息,请参见Character类中的Unicode字符表示部分)。索引值指的是字符代码单位,因此补充字符在String中使用两个位置。
UTF-16(16位Unicode转换格式)是一种字符编码,能够编码Unicode的所有1,112,064个有效代码点。
UTF-8是可变宽度的字符编码,能够使用一到四个8位字节对Unicode中的所有1,112,064个有效代码点进行编码。
因此,可以在Java String
中出现的每个字符都可以用UTF-8
进行编码。
因此
StandardCharsets.UTF_8.newEncoder().canEncode(input);
应始终返回true。