2016-07-04 7 views
3

В моем приложении мне нужно было отобразить конвертацию валюты.Проблема использования символа символа AED (د.إ). Он перемещается влево

Для например:

1 ₹= 0.015 $ 

Аналогично я хочу показать переход от AED в USD. Когда я пытаюсь, уравнение преобразования искажается.

1 د.إ = 0.99 $ 

ответ

2

Символ د.إ в правом к левому скрипту (арабский) и каждый из этих персонажей сильно справа налево, а цифры и символ $ слабо влево-вправо и = нейтрально. Это означает, что алгоритм, который обычно делает хорошую работу по смешиванию слева направо и справа налево символов, не работает так, как мы можем надеяться здесь.

Решение состоит в том, чтобы явно поставить правильный налево (U + 200F, ‏‏) перед правым налево символ и знак слева-направо (U + 200E, ‎‎) после него :

$1 = 3.67‏د.إ‎ 

Результат:

$1 = 3.67‏د.إ‎ 

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

Это имеет смысл только в контексте, когда смысл значения $ ясен; как знак песо/доллар/эскудо используются для 31 активных валют и очень многих исторических валют, это как правило, лучше использовать код ISO 4217 вместо символа:

1 USD = 3.67 AED 

Это также имеет то преимущество, не нуждаясь чтобы определить, какие валюты нуждаются в явных отметках ltr и rtl, а также не хранить, какие валюты помещают символ перед номером, и который после того, как коды ISO 4217 всегда поступают после номера.

 Смежные вопросы

  • Нет связанных вопросов^_^