Определите, являются ли символы в строке конкретным набором символов
Мне нужно иметь возможность взять строку в Java и определить, находятся ли все содержащиеся в ней символы в заданном наборе символов (например, ISO-8859-1). Я немного оглянулся на простой способ сделать это (в том числе играть с CharsetDecoder
), но еще не смог найти что-то.
Каков наилучший способ взять строку и определить, находятся ли все символы в заданном наборе символов?
Ответы
Ответ 1
Класс CharsetEncoder в пакете java.nio.charset предложите метод canEncode, чтобы проверить, поддерживается ли конкретный символ.
Michael в основном сделал что-то вроде этого:
Charset
. forName
(CharEncoding.ISO_8859_1
) newEncoder
( ) canEncode
( "string" )
Обратите внимание, что CharEncoding.ISO_8859_1
полагается на общедоступность Apache и может быть заменен на "ISO_8859_1".
Ответ 2
Я думаю, что самый простой способ - иметь таблицу, в которой символы Unicode могут быть представлены в кодировке целевого набора символов, а затем тестировать каждый символ в строке. Для семейства ISO-8859 таблица обычно может быть представлена одним или несколькими диапазонами символов Unicode, что делает тест относительно простым. Это много ручной работы, но нужно делать только один раз.
EDIT: или используйте Aubin answer, если кодировка поддерживается в вашей реализации Java.:)