Я работаю над приложением, которое позволяет пользователям вводить символы японского языка. Я пытаюсь найти способ определить, является ли ввод пользователя японской кана (хирагана, катакана или кандзи).
В приложении есть определенные поля, в которых ввод латинского текста был бы неуместным, и мне нужен способ ограничить определенные поля только кандзи, только катаканой и т. д.
В проекте используется кодировка UTF-8. Я не ожидаю, что приму ввод JIS или Shift-JIS.
Идеи?



Не уверен в идеальном ответе, но в Википедии есть диапазон Unicode для катакана и хирагана. (Которые, как я ожидал, также доступны в unicode.org.)
Проверка этих диапазонов по входу должна работать как проверка хираганы или катаканы для Unicode независимо от языка.
Что касается кандзи, я ожидал, что это будет немного сложнее, поскольку я ожидайте, что китайские иероглифы, используемые в китайском и японском языках, входят в один и тот же диапазон, но опять же, я могу ошибаться здесь. (Я не могу ожидать, что упрощенный китайский и традиционный китайский будут включены в один и тот же диапазон ...)
Похоже, вам в основном нужно просто проверить, находится ли каждый символ Unicode в определенном диапазоне. Диаграммы кода Unicode должен быть хорошей отправной точкой.
Если вы используете .NET, моя библиотека MiscUtil имеет некоторую поддержку диапазона Unicode - это примитивно, но она должна выполнять свою работу. У меня сейчас нет источника под рукой, но я обновлю этот пост примером позже, если он будет полезен.
@Zack: Пройдите по ссылке и сможете скачать :)
Ох ох! Однажды у меня было такое ... У меня было регулярное выражение с хираганой, затем катаканой и затем кандзи. Я забыл точные коды, пойду посмотрю.
регулярное выражение отлично, потому что вы удваиваете проблемы. И я сделал это на PHP, мой выбор для особо сильной автоматической генерации проблем.
--редактировать--
$pattern = '/[^\wぁ-ゔァ-ヺー\x{4E00}-\x{9FAF}_\-]+/u';
Нашел этот здесь, но он не отличный ... Буду искать
--редактировать-- Я просмотрел свой портативный жесткий диск ... Я думал, что сохранил этот фрагмент от последней компании ... извините.
Раньше я использовал тот же диапазон для канджи (4E00 ~ 9FAF), но проверил его в диаграммах юникода и обнаружил, что полный диапазон немного больше: 4E00 ~ 9FFF. Хотя, вероятно, он содержит символы, которые не используются (больше?) В японском языке.
Ввод японских иероглифов в исходный файл - плохая практика.
Джон, у тебя не было бы источника под рукой, не так ли?