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

问题描述 投票:15回答:10

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

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

添加文档类型之前:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9oU2c4Ty5wbmcifQ==” alt =“添加文档类型之前”>

添加文档类型后:

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9ScEVJWC5wbmcifQ==” alt =“添加文档类型后”>

我也将这些元标记添加到了我的页面:

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

所以,如何在具有严格doctype的页面中查看阿拉伯数字(在IE中,因为Firefox始终不显示阿拉伯数字?)

html numbers doctype arabic xhtml-1.0-strict
10个回答
8
投票

这是一些将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;
    }

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>

3
投票

假设您需要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>

2
投票

firefox默认渲染编号为拉丁文要更改此设置,请转到Firefox的地址栏,然后键入about:config此页面是Firefox的高级设置找到此行“ bidi.numeral”并双击它如果将渲染文本的值设置为“ 1” Firefox,请查看上下文。如果文本是波斯语,则将数字渲染为波斯语。如果将值设置为“ 4”,则将数字转换为波斯语


2
投票

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

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

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

您可以选择一种包含阿拉伯语-Hndi数字的字体,然后使用css(@ font-face)导入它,然后简单地使用它,

对所有主流浏览器(IE .. Firefox .. Chrome)都可以正常工作] >>

look at this result

这里是页面的完整代码:

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

1
投票

这对我有用,无论文本方向如何(在Chrome,Safari,Firefox和Opera中):


1
投票

如果您使用波斯文字,例如'BNazanin',并写:


1
投票

尝试一下,希望对您有帮助;)


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);
});

0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.