Удаление диакритических знаков на польском языке

Я пытаюсь удалить диакритические знаки из панграммы на польском языке. Я использую код из блога Майкла Каплана http://www.siao2.com/2007/05/14/2629747.aspx , однако безуспешно.

Рассмотрим следующую панграму: «Pchnąć w tę łódź jeża lub ośm skrzyń fig. ". Все отлично работает, но на букву "ł" я все равно получаю "ł". Я предполагаю, что проблема в том, что «ł» представлен в виде единого символа Юникода, и не существует следующего NonSpacingMark.

У вас есть идея, как я могу это исправить (не полагаясь на пользовательское отображение в каком-то словаре - я ищу какое-то преобразование в юникоде)?

9
задан Community 8 October 2014 в 17:04
поделиться

4 ответа

Подход, использованный в статье, заключается в удалении меток, не пробелов. Поскольку, как вы правильно заметили, "ł" не состоит из двух символов (один из которых - Mark, Nonspacing), поведение, которое вы видите, ожидаемо.

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

Если вас интересуют только польские иероглифы, по крайней мере, отображение небольшое и четко определенное (см., например, нижнюю часть http://www.biega.com/special-char.html ). В общем случае, я не думаю, что существует автоматизированное решение для символов, которые не состоят из стандартного символа и знака без пробела.

3
ответ дан 4 December 2019 в 13:44
поделиться

Он находится в диаграмме Unicode , кодовая точка \ u0142. Прокрутите вниз до описания "Строчная латинская буква со штрихом", в нем нет декомпозиции. Ничего не знаю о польском языке, но обычно у буквы есть отличительный знак, который делает ее собственной буквой, а не базовой с диакритическим знаком.

2
ответ дан 4 December 2019 в 13:44
поделиться

Существует довольно много предварительно составленных символов, которые не имеют осмысленных разложений.

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

ł является одним из них. IIRC также невозможно дать нейтральную в культурном отношении транскрипцию для алфавитов, в которых не используется ł. Я думаю, что немцы склонны транскрибировать это как w, а не l (или, может быть, это делает кто-то другой), что имеет смысл (это тоже не совсем правильный звук, но он ближе, чем l).

1
ответ дан 4 December 2019 в 13:44
поделиться

Вам придется заменить их вручную (так же, как ÆÐØÞßæðøþ в Latin-1).

У других людей была такая же проблема, поэтому репозиторий данных Unicode Common Locale Data «Согласился добавить транслитератор, который удаляет акценты, даже для наложенных акцентов». (Билет №2884)

2
ответ дан 4 December 2019 в 13:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: