Слова перемешиваются, когда арабские и английские слова находятся в одной строке
Когда английские и арабские слова объединяются в строку, слова имеют тенденцию перемешиваться, так как арабский язык имеет направление RTL, а английский - LTR.
Я пытаюсь отправить электронное письмо, и ниже указана тема моего электронного письма.
String subText = "Financial Details of شركة اختبار were sent";
Тема электронного письма выглядит как
были отправлены شركة مصنع الجـــوارب الراقيــــه . المحــدوده Финансовая информация о
После проверки какого-то другого ресурса, я решил добавить невидимый символ RLE, в начале которого якобы останавливается такая перемешивание, но все равно получается та же перемешанная версия.
char RightToLeftEmbedding = (char)0x202B;
subText = RightToLeftEmbedding + subText ;
Что не так с подходом?
1 ответ
Кажется, что общее направление письма, применяемое программным обеспечением, которое отображает тему электронной почты, направлено справа налево, возможно, потому, что оно было специально разработано или настроено для использования с языками справа налево, такими как арабский. Результат на самом деле не тасуется, а представляет собой обычный рендеринг справа налево, где последовательность символов с направленностью слева направо отрисовывается с этой направленностью.
Использование U+202B ВСТАВКА С ПРАВОЙ ЛЕВОЙ не помогает, так как оно просто явно запрашивает направление справа налево, которое в любом случае используется. Вместо этого используйте U+202A ЛЕВО-ПРАВИЛЬНОЕ ВСТАВЛЕНИЕ.