Java (внутренне) всегда кодирует String
в UTF-16 независимо от его содержимого.http://docs.oracle.com/javase/6/docs/api/java/lang/String.html
Вы можете преобразовать его в любую поддерживаемую кодировку, включая ASCII и UTF-8, но можете потерять символы, которые не отображаются в выбранной кодировке.
В зависимости от того, почему вы проверяете,Вы можете преобразовать строку в ASCII и прочитать ее обратно в строку Java и посмотреть, совпадают ли они.Если это так, ASCII достаточно для хранения вашей строки.Это будет наиболее очевидной проверкой для более поздних читателей вашего исходного кода.
Вы также можете сравнить кодовую точку Unicode каждого символа с 128, если они все <= 127, строка является ASCII-совместимой, т.е.не содержит арабскийЧтобы получить кодовую точку Unicode для символа вашей строки, используйте <code>str.codePointAt(index).
Если вы явно хотите найти арабский текст, вы должны явно проверить наличие арабских символов.В противном случае вы можете получить ложные срабатывания для французского, немецкого или многих других языков, которые используют символы с акцентом.К счастью, консорциум Unicode связывает блоки для каждого языка, так что проверка, скорее всего, сводится к cp >= beginningOfUnicodeBlock && cp <= endOfUnicodeBlock
.
Edit, намекает tchrist: Есть java.lang.Character.UnicodeBlock
и java.lang.Character.UnicodeScript
.Последний был добавлен в Java 7. Оба могут использоваться для классификации кодовых точек Юникода.
int cp = str.codePointAt(index);
if (UnicodeScript.ARABIC.equals(UnicodeScript.of(cp)) {
// arabic character found
}