ASP.NET阿拉伯语文本 - 句点错误地出现在句子的开头

时间:2016-01-05 19:25:35

标签: javascript c# html asp.net localization

我有一个ASP.NET v4表单,其中包含textarea元素,dir字段设置为auto

<form runat="server">
    <textarea id="mytext" name="mytext" dir="auto" style="width: 400px; height: 300px; margin: 10px;"></textarea>
    <input type="submit" value="Submit"> 
</form>

将Windows操作系统的语言设置为阿拉伯语后,在文本框中输入阿拉伯语文本时,文本的方向按预期从右向左。此外,当提交表单并检查代码隐藏中的Request.Form["mytext"]时,除了最后一句末尾(即最左边)的句点字符已移至开头之外,文本显示正确第一句话(即最右边)。

E.g(不使用真正的阿拉伯语单词,因为我不懂语言):
之前。بثبصبصببص.بثبثبثبصيص.ثاثقاثلثبص
在بثبصبصببص.بثبثبثبصيص.ثاثقاثلثبص。

之后。

知道为什么会这样,以及我能做些什么来阻止它?

1 个答案:

答案 0 :(得分:3)

如果我正确理解了您的问题并且您担心文字的顺序不正确,那么您应该知道何时在rtl文本框中输入文本并正确查看,文字的顺序正确

在调试器中,您最初只看到.,因为在调试器中,文本框从左到右。它足以保存收到的文本,然后在显示时,在具有从右到左样式的文本框中显示文本。

要正确输入سلام علیکم.,请先按顺序输入س然后ل然后ا,......最后.

س ل ا م 空间 ع ل ی ک م

它会在dir="rtl"dir="auto"的文本框中正确显示,如下图所示:

<html>
<head><title>auto-rtl-ltr</title></head>
<body>
  <input type="text" dir="auto" value="سلام علیکم."/>
  <input type="text" dir="rtl" value="سلام علیکم."/>
  <input type="text" dir="ltr" value="سلام علیکم."/>
</body>
</html>

同样作为测试,您可以将سلام علیکم.粘贴到记事本或文本框中,然后使用左( Ctrl + Shift )和右( Ctrl < / kbd> + Shift )在ltr和rtl之间切换并查看结果。