Определите, являются ли символы в строке конкретным набором символов - программирование
Подтвердить что ты не робот

Определите, являются ли символы в строке конкретным набором символов

Мне нужно иметь возможность взять строку в Java и определить, находятся ли все содержащиеся в ней символы в заданном наборе символов (например, ISO-8859-1). Я немного оглянулся на простой способ сделать это (в том числе играть с CharsetDecoder), но еще не смог найти что-то.

Каков наилучший способ взять строку и определить, находятся ли все символы в заданном наборе символов?

4b9b3361

Ответ 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.:)