我有一个从右到左的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始终不显示阿拉伯数字?)
这是一些将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;
}
您可以在模板中使用此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>
假设您需要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>
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中):
如果您使用波斯文字,例如'BNazanin',并写:
尝试一下,希望对您有帮助;)
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);
});
如果需要将某些英语替换为阿拉伯数字而不是整个HTML,请将所需的数字传递给此函数。