Подтверждение ввода Кана

Я работаю над приложением, которое позволяет пользователям вводить символы японского языка. Я пытаюсь найти способ определить, является ли пользовательский ввод японской кана (хирагана, катакана или кандзи).

В приложении есть определенные поля, в которых ввод латинского текста был бы неуместным, и мне нужен способ ограничить определенные поля только кандзи или только катаканой и т. Д.

В проекте используется кодировка UTF-8. Я не ожидаю принять JIS или Shift-JIS.

Идеи?

3 ответа

Решение

Похоже, вам нужно просто проверить, находится ли каждый символ Юникода в определенном диапазоне. Диаграммы кодов Unicode должны быть хорошей отправной точкой.

Если вы используете.NET, моя библиотека MiscUtil имеет некоторую поддержку диапазона Unicode - она ​​примитивна, но она должна делать свою работу. У меня нет источника для передачи прямо сейчас, но я обновлю этот пост с примером позже, если это будет полезно.

Не уверен в идеальном ответе, но в Википедии указан диапазон Unicode для катаканы и хираганы. (Что я ожидаю, также доступны на http://unicode.org/.)

  • Хирагана: Юникод: 3040-309F
  • Катакана: Юникод: 30A0–30FF

Проверка этих диапазонов по входным данным должна работать как проверка для хирагана или катакана для Unicode в не зависящей от языка манере.

Для кандзи я бы ожидал, что это будет немного сложнее, так как я ожидаю, что китайские иероглифы, используемые в китайском и японском языках, включены в один и тот же диапазон, но опять же, я могу ошибаться. (Я не могу ожидать, что Упрощенный китайский и Традиционный китайский будут включены в один и тот же диапазон...)

Ой ой! У меня был этот один раз... У меня было регулярное выражение с хирагана, затем катакана и затем кандзи. Я забыл точные коды, пойду посмотрю.

регулярное выражение замечательно, потому что вы удваиваете проблемы. И я сделал это на PHP, мой выбор для очень сильной автоматической генерации проблем

--редактировать--

$pattern = '/[^\wぁ-ゔァ-ヺー\x{4E00}-\x{9FAF}_\-]+/u';

Я нашел это здесь, но это не здорово... Я буду продолжать искать

--edit-- Я просмотрел свой портативный жесткий диск.... Я думал, что сохранил этот конкретный фрагмент из последней компании... извините.

Другие вопросы по тегам