C# 用西文阿拉伯语显示数字

C# 用西文阿拉伯语显示数字,c#,.net,vb.net,encoding,character-encoding,C#,.net,Vb.net,Encoding,Character Encoding,我想用西文阿拉伯语显示数字,如“0123456789”,而不考虑我的windows本地版本。我见过许多转换成东方阿拉伯语的方法,比如“拉丁语” 但是我想要相反的这很有趣NumberFormatInfo类具有NativeDigits属性。但是: 格式化或解析数值或日期和时间值时,仅使用基本拉丁数字0(U+0030)到9(U+0039) 这意味着无论windows如何,本地string.Format()和int.ToString()数字0-9都用于生成输出字符串。不确定问题出在哪里。你是怎么看待这些

我想用西文阿拉伯语显示数字,如“0123456789”,而不考虑我的windows本地版本。我见过许多转换成东方阿拉伯语的方法,比如“拉丁语”


但是我想要相反的

这很有趣
NumberFormatInfo
类具有
NativeDigits
属性。但是:

格式化或解析数值或日期和时间值时,仅使用基本拉丁数字0(U+0030)到9(U+0039)


这意味着无论windows如何,本地
string.Format()
int.ToString()
数字0-9都用于生成输出字符串。

不确定问题出在哪里。你是怎么看待这些数字的?你是如何展示它们的?出来什么,你想出来什么?这段代码与问题有什么关系?好吧,我有一个web应用程序,它可能在显示数字的机器上工作,比如“0123456789”或“1633”或“1638”等,所以我想保留一些特定的控件,以将数字显示为“0123456789”,即使在显示数字的机器上,比如“0123456789”,我刚刚检查过。切换到ar SA和控制台。WriteLine(Convert.ToString(15))仍然输出
15
此外,您始终可以显式使用不变量文化设置数字格式。您还需要从控制面板>区域和语言>附加设置>数字选项卡>将标准数字设置为“不变量”“并将“使用本地数字”设置为“National”,您将看到所有数字都类似于“O1632”、“O1634”、“O1636”、“O1638”、“O1640”、“O1641”是的,我做了。但它仍然是打印15。它在您的计算机上以不同的方式工作吗?请在windows应用程序或web应用程序中尝试
const UInt16 sh = 0x0660 - 0x0030;
string ConvertToEasternArabic(string value)
{
    System.Text.StringBuilder s = new System.Text.StringBuilder();
    String lst = value.ToString();
    foreach (char x in lst)
    {
        if (char.IsDigit(x))
        {
            UInt16 c = Convert.ToUInt16(x);
            c += sh;
            s.Append(Convert.ToChar(c));
        }
        else
            s.Append(x);
    }
    return s.ToString();
}