#perl #encoding #utf-8 #cjk
#perl #кодирование #utf-8 #cjk
Вопрос:
У меня есть строка, которая может быть либо английским словом, либо одним символом CJK. Я гарантирую, что эта строка находится в кодировке UTF-8. Я работаю внутри скрипта perl.
Проблема более высокого уровня заключается в том, что у меня есть массив строк, подобный описанному выше. Я выполняю объединение » » @array. Я хочу знать, чтобы не добавлять пробел, когда его CJK.
Итак, для CJK я просто сделаю join «» @array .
Я осмотрелся, но не могу найти этот точный вопрос.
Спасибо.
Ответ №1:
Вы могли бы использовать регулярное выражение p{InCJK_Unified_Ideographs}
. Это блок Unicode (в отличие от сценариев Unicode, которые также поддерживаются Perl, но, похоже, не соответствуют описанию вашей проблемы).
Есть несколько других блоков-кандидатов, таких как расширение A и дополнение Radicals. Вот полный список.
Комментарии:
1. Это сработало отлично! Я не знал о блоках Unicode. Что вы подразумеваете под своим определителем? Существует ли опасность того, что некоторые символы CJK не будут распознаны? Или что означают классы Unicode?
2. @YGomez: Рад, что это помогло. Когда вы писали этот комментарий, я уже обновил ответ и удалил «классы» из текста. Взгляните на ссылку, которую я добавил, она все довольно хорошо объясняет.
3. О, я понимаю, что вы имеете в виду. Я просмотрю список блоков, чтобы убедиться, что все возможные входные данные охвачены. Спасибо за ссылку.