Избежать заглавной буквы с акцентом?

Вот моя проблема.

Когда мое веб-приложение печатает текст, который я экранирую с помощью библиотеки StringEscapeUtils, если текст содержит "ÁÉÍÓÚ" в результате PDF, пропускаются эти буквы, только если они прописные.

например: 'LOS MÉDICOS ESTAN EN EL TURNO DE DÍA' Результат: 'LOS MDICOS ESTN EN EL TURNO DE DA'

Почему-то игнорирование заглавной буквы с акцентом

Знаете ли вы какой-либо способ экранирования заглавного текста с помощью StringEscapeUtils??

Спасибо

1 ответ

Могу ли я предложить другую библиотеку - я написал свою собственную библиотеку с открытым исходным кодом, которая содержит несколько утилит. Одним из них является кодирование строки в последовательность Unicode и декодирование последовательности Unicode обратно в строку Regualr. Например, строка "Hello World" будет преобразован в

"\u0048\u0065\u006c\u006c\u006f\u0020
\u0057\u006f\u0072\u006c\u0064"


и может быть восстановлен обратно. В вашем случае я запустил следующий код:

String s = "LOS MÉDICOS ESTÁN EN EL TURNO DE DÍA";
System.out.println("Original String: " + s);
s = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(s);
System.out.println("Encoded String: " + s);
s = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(s);
System.out.println("Decoded String: " + s);

И получил результат, как и ожидалось (без пропущенных символов):

Original String: LOS MÉDICOS ESTÁN EN EL TURNO DE DÍA
Encoded String: \u004c\u004f\u0053\u0020\u004d\u00c9\u0044\u0049\u0043\u004f\u0053\u0020\u0045\u0053\u0054\u00c1\u004e\u0020\u0045\u004e\u0020\u0045\u004c\u0020\u0054\u0055\u0052\u004e\u004f\u0020\u0044\u0045\u0020\u0044\u00cd\u0041
Decoded String: LOS MÉDICOS ESTÁN EN EL TURNO DE DÍA

В некоторых случаях с использованием символов из набора символов, отличного от ISO-8859-1, я обнаружил, что отправка последовательности Unicode вместо последовательности символов часто решает много проблем, таких как символы, замененные на "?" или гибериш. Причина в том, что каждая последовательность Unicode '\UXXXX' уникально отображается на символ и не может быть неверно переведена. Это своего рода обходной путь, поскольку реальная проблема обычно решается путем правильной настройки набора символов или настроек кодирования, но во многих случаях такое преобразование помогло мне диагностировать проблему и затем решить ее. Но, как я уже сказал, вы можете просто преобразовать свою строку в последовательность Unicode и отправить ее в свое веб-приложение. Он должен работать. Вот ссылка на статью, в которой описывается библиотека с открытым исходным кодом MgntUtils: Java-библиотека с открытым исходным кодом с фильтрацией трассировки стека, конвертер Unicode для анализа Silent String и сравнение версий. В самом начале статьи объясняется, где взять библиотеку и как ее использовать. Он доступен в виде артефакта Maven из Maven Central, а также на GitHub. Таким образом, вы можете получить его как артефакт для включения в ваш проект или / и получить исходники и Javadoc. В статье найдите пункт "String Unicode converter", чтобы увидеть объяснение StringUnicodeEncoderDecoder

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