这里有很多问题。根据 unicode 标准,括号是中性的,这意味着它们本质上不被视为 LTR 或 RTL。他们采用周围语言的方向。在错误呈现的示例中,右括号的方向被假定为与英语相同,即 LTR。
第一个问题:您告诉浏览器该段落应被视为 RTL。浏览器在里面找到英文,也就是LTR,所以它认为英文是嵌入在一个RTL段落中,最后一个字符“)”被视为RTL。(周围的段落是 RTL)。
第二个问题:这里没有问题,从你提供的源代码来看,你已经正确地提供了括号。但实际上,应该在 RTL 文本之后和结束 </P> 之前的右括号实际上是在起始 RTL 文本之前。如果输入正确,它看起来会出错(因为您使用的文本编辑器根据 unicode 假定结束括号是 LTR)。要验证这一点,请将内容复制到编辑器中,将光标放在“问题:”的末尾,然后反复按向右箭头并观察最后一个括号的位置。
在不提供更多解释的情况下,这里有一些示例可以使其正常工作:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Bracket problems with BiDi</title>
</head>
<body>
<p style="direction: rtl;"><span dir="ltr">Bracket problem no more: hello (world):</span></p>
<p style="direction: rtl;"><span style="direction: ltr; unicode-bidi: embed">Bracket problem no more: hello (world):</span></p>
<p style="direction: rtl;">Bracket problem no more: السلام (عليكم)</p>
<!-- style for p tag below is ltr by default -->
<p>Bracket problem no more: <span dir="rtl">السلام (عليكم)</span></p>
<p>Bracket problem no more: <span style="direction: rtl; unicode-bidi: embed">السلام (عليكم)</span></p>
</body>
</html>
style="direction: ltr;" 的方式有所不同 有效且 dir="ltr" 有效,所以我给出了两者的例子。另外,因为我假设您基本上需要解决您的第二个问题,您主要在其他 LTR 文档中包含 RTL 文本,所以我提供了最后两个示例。
注意:如果最后两个示例是您要查找的内容,并且您将使用 CSS,则 unicode-bidi 属性是必需的,这就是工作和不工作之间的所有区别。