我有一个 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"] 时,除了最后一句话末尾的句号字符(即在最左边)已经移动到第一句的开头(即在最右边)。
例如(不使用真正的阿拉伯语单词,因为我不懂该语言):
之前 在 بثبصبصببو.بثبثبثبصيص.ثاثقاثلثبain 之后。
知道为什么会发生这种情况以及我可以做些什么来防止它发生吗?
请您参考如下方法:
如果我正确理解你的问题并且你担心文本的顺序不正确,你应该知道当你在 rtl 文本框中输入文本并正确看到它时,文本的顺序是正确的
在调试器中,您最初只能看到 .,因为在调试器中,文本框是从左到右排列的。保存收到的文本就足够了,然后在显示时,将文本显示在具有从右到左样式的文本框中。
要正确输入 سلام علیکم.,请按顺序输入,首先是 س,然后是 ل,然后是 ا,. .. 最后 . :
▽ ä ا ms 空间 ù ä ˊ ms .
它会在带有 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之间切换并查看结果。
