Nano Hash - криптовалюты, майнинг, программирование

Перевод символов Unicode в заголовке письма

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

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

  • Все содержимое почты хранится в БД в формате Unicode (например: ضنتةى для отображения арабских символов).

  • Я использую API-интерфейс Apache commons-email для отправки писем. (версия: commons-email-1.1.jar).

  • Закодирован на JAVA.

  • Почта, отправленная через SMTP-хост Gmail.

  • Когда почта отправляется и принимается клиентом --> текст сообщения переводится и отображаются арабские символы.

Проблема: Тема показывает юникод в том виде, в каком он есть в моей БД. Перевод не происходит.

Я знаю, что необходимо настроить некоторые почтовые заголовки, но не уверен, что и как. Также RFC 2047, кажется, предлагает решение, но как мне использовать этот конкретный RFC?

Заранее спасибо. -Чандан

04.01.2012

  • Это не Unicode, это объекты Unicode HTML. В какой-то момент вам нужно будет преобразовать их в физическую кодировку Unicode, например UTF-8. 04.01.2012

Ответы:


1

Как сказал @deceze, вы «на самом деле» не работаете с юникодом. Вы используете нотацию HTML для обозначения символов Юникода. Тело вашего электронного письма отформатировано как HTML, поэтому почтовый клиент интерпретирует их так же, как браузер.

Тема письма не является частью тела в формате HTML, поэтому отображается некорректно.

Вы должны либо переключиться на реальную работу с юникодом, т.е. определить кодировку БД как UTF-8 и хранить там юникодные тексты, чтобы вы не видели тексты типа ضنتةى, а вместо этого видели ضنتةى.

В этом случае все будет работать. Если вы не можете этого сделать по какой-либо причине, вы должны выполнить «перевод» в своем java-коде.

Кстати, дополнительно к этому переводу необходимо указать направление документа rtl - справа налево. В противном случае текст будет смещен влево в системах с направлением документа слева направо по умолчанию.

04.01.2012
  • Спасибо, Алекс. Это было круто. Как вы сказали, я не буду тревожить базу данных. Скорее я отменил экранирование HTML-объектов Unicode следующим образом: StringEscapeUtils.unescapeHtml(ضنتةى); Оба являются темой электронной почты, и тело выглядит просто отлично. Ваше здоровье... 05.01.2012

  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..