Как я могу просмотреть арабские/персидские числа на странице HTML со строгим doctype?

У меня есть страница HTML, которая справа налево. Когда я не использую какой-либо doctype, мои номера находятся на арабском/персидском языке, но когда я использую строгий режим, они переводят на английский.

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Final//EN">

Перед добавлением doctype:

Before adding doctype

После добавления doctype:

After adding doctype

Также я добавил эти метатеги на свою страницу:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Language" content="fa" />

Итак, как я могу просматривать арабские цифры на странице со строгим doctype (в IE, потому что Firefox не показывает арабские номера)?

Ответ 1

вот небольшой код javascript, который преобразует строку 1234 в строку 1234

   var map =
    [
    "&\#1632;","&\#1633;","&\#1634;","&\#1635;","&\#1636;",
    "&\#1637;","&\#1638;","&\#1639;","&\#1640;","&\#1641;"
    ];

    function getArabicNumbers(str)
    {
        var newStr = "";

        str = String(str);

        for(i=0; i<str.length; i++)
        {
            newStr += map[parseInt(str.charAt(i))];
        }

        return newStr;
    }

Ответ 2

Предполагая, что вам нужен строгий документ XHTML 1.0:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fa" lang="fa" dir="rtl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Title here</title>
  </head>

  <body>
    <p>Text here</p>
  </body>
</html>

Здесь эквивалент HTML 4.01 Строгий документ:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
<html lang="fa" dir="rtl">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Title here</title>
  </head>

  <body>
    <p>Text here</p>
  </body>
</html>

Здесь эквивалентная страница HTML5, только для сравнения.

<!DOCTYPE html>
<html lang="fa" dir="rtl">
  <head>
    <meta charset="UTF-8" />
    <title>Title here</title>
  </head>

  <body>
    <p>Text here</p>
  </body>
</html>

Ответ 3

номер по умолчанию рендеринга firefox для латинского языка для изменения этого параметра перейдите на адресную панель Firefox и введите примерно: config эта страница представляет собой расширенную настройку firefox найдите эту строку "bidi.numeral" и дважды щелкните по ней если установлено значение "1" firefox для визуализации текста, посмотрите на контекст. если текст является персидским номером рендеринга персидскому. если установленное значение "4" alwase отображает число цифр на персидский

Ответ 4

Очень просто просмотреть арабские/персидские числа на странице HTML.

Я решил ту же проблему, изменив имя шрифта,

В моем случае я хочу показать один и тот же символ всем пользователям

вы можете выбрать шрифт, который содержит цифры арабского языка и импортировать его с помощью css (@font-face), а затем просто использовать его,

Это отлично работает для всех основных браузеров (IE.. Firefox.. Chrome)

посмотреть на этот результат

вот полный код страницы:

<html>
<head>

</head>
<body>
<style type="text/css">

@font-face {
    font-family: ArabicTwo_Bold;
    src: url( ArabicTwo_Bold.eot);
}

@font-face {
    font-family: ArabicTwo_Bold;
    src: url( ArabicTwo_Bold.ttf);
}


div , input {
 font-family: ArabicTwo_Bold;
}
</style>


<input type='text' value='هذا نص هندي 123456 ' />
<div> هذا نص هندي 123456  </div>
</body>
</html>

Ответ 5

Вы можете конвертировать английские цифры в персидские, используя этот код JavaScript в вашем шаблоне:

    <script type="text/javascript">
    var replaceDigits = function() {
        var map = ["&\#1776;","&\#1777;","&\#1778;","&\#1779;","&\#1780;","&\#1781;","&\#1782;","&\#1783;","&\#1784;","&\#1785;"]
        document.body.innerHTML = document.body.innerHTML.replace(/\d(?=[^<>]*(<|$))/g, function($0) { return map[$0]});
    }
    window.onload = replaceDigits;
    </script>

Ответ 6

Это работает для меня, независимо от направления текста (в Chrome, Safari, Firefox и Opera):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Final//EN">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <style type="text/css">
            body { direction: rtl; }
        </style>
    </head>

    <body>
        ۴۲
    </body>
</html>

(Опустил content-language, так как это необязательно здесь.)

Ответ 7

var map_format_arabic = ["&\#1632;","&\#1633;","&\#1634;","&\#1635;","&\#1636;", "&\#1637;","&\#1638;","&\#1639;","&\#1640;","&\#1641;"];

$.each( $('.format_arabic'), function () {
    var n=$(this).text().replace(/\d(?=[^<>]*(<|$))/g, function($0) { return map_format_arabic[$0]});
    $(this).html(n);
});

Ответ 8

Если вы используете персидские шрифты типа "BNazanin" и пишите:

http-equiv="Content-Type" content="text/html; charset=UTF-8"
и http-equiv="Content-Language" content="fa" в метатегах.

Затем вы можете увидеть числа в персидском языке.

и если вы используете lang='En' в некоторых тегах на странице html, числа в этом теге будут отображаться на английском языке.

Ответ 9

попробуйте это, надеюсь, поможет вам;)

между и

<script language="JavaScript" type="text/javascript">


var replaceDigits = function() {
var map =
[
"&\#1632;","&\#1633;","&\#1634;","&\#1635;","&\#1636;",
"&\#1637;","&\#1638;","&\#1639;","&\#1640;","&\#1641;"
]

document.body.innerHTML =
document.body.innerHTML.replace(
/\d(?=[^<>]*(<|$))/g,
function($0) { return map[$0] }
);
}

</script>

то в конце тега body вставьте это:

<script type="text/javascript">
window.onload = replaceDigits
</script>