如何在具有严格doctype的HTML页面中查看阿拉伯/波斯数字?

| 我有一个从右到左的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\" />
那么,如何在具有严格doctype的页面中查看阿拉伯数字(在IE中,因为Firefox始终不显示阿拉伯数字)?     
已邀请:
这是一些将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;
    }
    
假设您需要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>
    
您可以使用模板中的以下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>
    
firefox默认渲染编号为拉丁 要更改此设置,请转到Firefox的地址栏,然后键入about:config 此页面是Firefox的高级设置 找到这行“ bidi.numeral”并双击它 如果将渲染文本的值设置为\“ 1 \” Firefox,请查看上下文。如果文本是波斯语,则将数字渲染为波斯语。 如果将值设置为\“ 4 \”,则将数字转换为波斯语     
在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>
    
不管文本方向如何(对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>
(省略了ѭ9,因为这里没有必要。)     
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);
});
    
如果您使用\'BNazanin \'这样的波斯字体并输入:
http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"
和meta标签中的
http-equiv=\"Content-Language\" content=\"fa\"
。 然后,您可以看到波斯语中的数字。 并且如果您在html页面的某些标签中使用ѭ13the,则该标签中的数字将以英文显示。     
试试这个,希望对您有帮助;) 之间
<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标签的末尾插入this:
<script type=\"text/javascript\">
window.onload = replaceDigits
</script>
    

要回复问题请先登录注册