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

本文关键字:句子 开头 错误 阿拉伯语 NET 文本 -句 ASP | 更新日期: 2023-09-27 18:29:08

我有一个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(不使用真正的阿拉伯语单词,因为我不懂阿拉伯语):
之前在ب

你知道为什么会发生这种情况吗?我能做些什么来防止它?

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

如果我正确理解你的问题,并且你担心文本的顺序不正确,你应该知道当你在rtl文本框中输入文本并正确看到它时,文本的顺序是正确的

在调试器中,最初只能看到.,因为在调试器中文本框是从左到右的。只需保存收到的文本,然后在显示时,将文本显示在具有从右到左样式的文本框中即可。

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

õ 305 ا م 空间 ع 305 ی ک م

它将正确显示在带有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+Shift)在ltr和rtl之间切换并查看结果。