与阿拉伯文本与数字的奇怪顺序

时间:2014-05-28 11:59:01

标签: text web localization numbers arabic

我有一个班级管理系统的代码。

来自网络浏览器

Case 1: 101عرب-2

但在我的mssql db中,这实际上是

Case 2: عرب-2#d#101 (remove #d#)

我不确定它是如何存储的, 但至少,SQL Manager向我展示了这一点。 该代码的英文版本是

101ARB-2

如何显示案例2的代码,而不是案例1?


加入:

由于以上数据来自我的客户,所以我不太确定 但我坚信插入陈述就像案例2

Insert tbl(code) values (N'عرب-2#d#101')

再次,当您阅读此页面中的代码时,请删除#d# 我甚至不知道如何输入类似案例2. :(
如果你没有得到我,只需尝试复制案例2并删除#s。

中间的'd'

加入:

我添加了真实案例2的图像。

this is what I want to get

2 个答案:

答案 0 :(得分:1)

通常,为了控制双向文本的显示方式,您需要使用方向控制字符:

  • U + 202A:LEFT-TO-RIGHT EMBEDDING(LRE)
  • U + 202B:右对边嵌入(RLE)
  • U + 202D:左右颠覆(LRO)
  • U + 202E:RIGHT-TO-LEFTRVERRIDE(RLO)
  • U + 202C:POP方向格式化(PDF)

但是,由于您提到了网页,因此使用<bdo>元素来控制文本行为可能是有意义的。 无论您想使用哪种解决方案,都更像是本地化问题。

要了解有关阿拉伯语本地化的更多信息,请参阅以下W3C文章:

答案 1 :(得分:0)

这与collat​​e有关,如果要存储本机语言字符,请将db列定义为nvarchar,nchar数据类型。然后插入前缀字母N'你的值'。这将存储与本机文本相同的值。

插入表值(N'101عرب-2')