2012-06-09 2 views
0

Недавно я занимался текстами со смешанными языками, включая китайский, английский и даже некоторые смайлики.Как отличить слово полуширина или полная ширина?

Я искал эту проблему довольно много, но единственное, что я могу найти, это «заменить символы полной ширины символами полуширины», а не сообщать вам, как определить, является ли символ половиной - или слово полной ширины.

Итак, мой вопрос:

Можно ли сказать, является ли слово полуширина или всю ширину?

+0

Обычно, если вы хотите изучить текст, вы поместите его в форму разложения совместимости, такую ​​как NFKD. Если вы это сделаете, латинские символы с полной шириной станут нормальными (полуширина), а halfwidth kana/hangul станет нормальным (полная ширина), что упростит анализ текста. Вы можете сделать это в python с помощью 'import unicodedata; unicodedata.normalize («NKFD», текст). –

+0

Спасибо за информацию! – amigcamel

+0

Это NFKD, а не NKFD. –

ответ

2

В unicode 6.1 есть блок Halfwidth and Fullwidth forms, pdf here.

В пределах этого блока, \uFF01-\uFF60 и \uFFE0-\uFFE6 являются Полноширинными, в то время как \uFF61-\uFFDC и \uFFE8-\uFFEE являются полушириной.

+0

\ u00F01- \ uFF60 не прав, это должно быть \ uFF01- \ uFF60 – Lelouchcr

+0

@Lelouchcr Исправлено! Спасибо за исправление через 3 года после ответа! – beerbajay

+0

Это не полный ответ. Символы вне форм Halfwidth и Fullwidth могут быть либо полушириной, либо полной шириной, поэтому использование только этой диаграммы блоков в качестве ссылки оставляет подавляющее большинство Unicode неопределенным. –

0

Слово имеет полную ширину, если его символы полные. Вам нужно найти спецификацию юникода и посмотреть, какие диапазоны символов полны, а затем проверить каждый символ на это.

1

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

Блок Unicode Halfwidth and Fullwidth Forms показывает только, какие символы имеют альтернативные формы. Для всех, которые не присутствуют в этом блоке, вы должны решить, что вы считаете половиной и полной шириной.

Я бы предположил, что большинство западных символов имеют полуширину, а большинство восточных символов - полноразмерное, но в обоих случаях будут исключения. Как this Unicode report основные моменты, есть также двусмысленности.

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