Слова перемешиваются, когда арабские и английские слова находятся в одной строке

Когда английские и арабские слова объединяются в строку, слова имеют тенденцию перемешиваться, так как арабский язык имеет направление RTL, а английский - LTR.

Я пытаюсь отправить электронное письмо, и ниже указана тема моего электронного письма.

String subText = "Financial Details of  شركة اختبار were sent";

Тема электронного письма выглядит как

были отправлены شركة مصنع الجـــوارب الراقيــــه . المحــدوده Финансовая информация о

После проверки какого-то другого ресурса, я решил добавить невидимый символ RLE, в начале которого якобы останавливается такая перемешивание, но все равно получается та же перемешанная версия.

char RightToLeftEmbedding = (char)0x202B;
subText = RightToLeftEmbedding + subText ;

Что не так с подходом?

1 ответ

Решение

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

Использование U+202B ВСТАВКА С ПРАВОЙ ЛЕВОЙ не помогает, так как оно просто явно запрашивает направление справа налево, которое в любом случае используется. Вместо этого используйте U+202A ЛЕВО-ПРАВИЛЬНОЕ ВСТАВЛЕНИЕ.

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