20

我有一个从右到左的 HTML 页面。当我不使用任何文档类型时,我的数字是阿拉伯语/波斯语,但是当我使用严格模式时,它们会变成英语。

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

添加文档类型之前:

添加文档类型之前

添加文档类型后:

添加文档类型后

我还将这些元标记添加到我的页面中:

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

那么如何在具有严格文档类型的页面中查看阿拉伯数字(在 IE 中,因为 Firefox 无论如何都不显示阿拉伯数字)?

4

10 回答 10

10

这是一个将 1234 字符串转换为 ١٢٣٤ 字符串的小 JavaScript 代码

   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;
    }
于 2012-04-02T21:55:15.623 回答
6

您可以在模板中使用此 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>
于 2018-02-02T13:12:54.203 回答
3

假设您想要一个 XHTML 1.0 Strict 文档:

<!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 Strict 文档:

<!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>
于 2011-04-12T20:00:14.883 回答
3

在 HTML 页面中查看阿拉伯/波斯数字非常简单。

我通过更改字体名称解决了同样的问题,

就我而言,我想向所有用户显示相同的字符

您可以选择包含阿拉伯语-Hndi 数字的字体并使用 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>
于 2015-11-18T08:00:31.163 回答
2

试试这个,希望对你有帮助;)

之间

<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>

然后在正文标签的末尾插入:

<script type="text/javascript">
window.onload = replaceDigits
</script>
于 2015-02-16T21:41:51.483 回答
2

firefox默认渲染编号为拉丁语以更改此设置转到Firefox的地址栏并输入about:config此页面是firefox的高级设置找到这一行“bidi.numeral”并双击它,如果将值设置为“1”firefox进行渲染文字看上下文。如果文本是波斯语,则将数字呈现为波斯语。如果将值设置为“4”,则始终将数字呈现为波斯语

于 2012-06-20T03:38:08.790 回答
2

如果您需要将一些英文替换为阿拉伯数字而不是整个 HTML,请将您需要的数字传递给此函数。

function toArabicNumeral(en) {
    return ("" + en).replace(/[0-9]/g, function(t) {
        return "٠١٢٣٤٥٦٧٨٩".substr(+t, 1);
    });
}
于 2020-04-01T10:06:21.073 回答
1

这对我有用,无论文本方向如何(在 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因为这里没有必要。)

于 2011-04-12T14:31:16.990 回答
1

如果您使用像“BNazanin”这样的波斯字体并写下:

http-equiv="Content-Type" content="text/html; charset=UTF-8"
http-equiv="Content-Language" content="fa"在元标记中。

然后你可以看到波斯语的数字。

如果您lang='En'在 html 页面中使用某些标签,则该标签中的数字将以英文显示。

于 2013-10-02T07:19:57.840 回答
1
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);
});
于 2014-12-24T21:28:45.720 回答