当我使用这段代码时:
var ri = new RegionInfo("us");
var nativeName = ri.NativeName; // ?? ??????? ????
Run Code Online (Sandbox Code Playgroud)
nativeName
那么为什么是弦乐"?? ??????? ????"
(在切罗基)?
如果我改为new RegionInfo("US")
(只有差异,资本US
),我会改为"United States"
.
我做知道的首选使用的RegionInfo
是给特定的文化信息字符串,例如:
new RegionInfo("en-US")
new RegionInfo("chr-Cher-US")
Run Code Online (Sandbox Code Playgroud)
等等,这是有效的.但是,只有当我使用小写时,为什么切诺基比英语更喜欢us
?
(见于Windows 10(版本1803"2018年4月更新"),.NET Framework 4.7.2.)
更新:即使在同一台机器上,这也不一致.例如,我尝试打开PowerShell很多次,每次粘贴[System.Globalization.RegionInfo]'US'
它.好像很长一段时间,PowerShell的所有实例都始终给出相同的结果.但过了一会儿,PowerShell的实例会产生相反的结果.这是两个窗口的屏幕截图,一个窗口始终有一个窗口,另一个窗口NativeName
始终具有相反的窗口.因此必须有一些非确定性的决定(套管无差异):
下面列出的场景的最佳做法是什么?
我们有一个应用程序,我们想支持多种货币.该软件将尊重用户的区域设置和区域设置,以指示正确的数字格式,即$ 10,000.00或10.000,00₴等.
但是,我们希望能够根据货币ID(可能是三个字母的ISO4217代码)格式化不同的数字.我们的想法是使用每种货币在数据库中存储一个表,然后请求用户选择将使用的货币符号.然后,程序将根据区域设置/区域设置格式化所有数字,但将使用我们程序中定义的货币符号.
因此,给出以下数值和货币
10000 AUD
5989.34 USD
450 EUR
该计划将输出
$ 10,000.00
$ 5,989.34
€450.00
或者使用区域设置将数字格式化为#####,## $结果将是;
10000,00 $
5989,34 $
450,00€
尊重区域设置/区域编号格式但显示不同的货币,最佳做法是什么?
我希望这是有道理的.
使用的技术是c#.NET 2.0.
我希望能够RegionInfo
做到以下几点:
new RegionInfo("United Kingdom");
Run Code Online (Sandbox Code Playgroud)
但这引发了一个例外,并表示它无法识别.
RegionInfo上的此页面表示如果"name不是有效的国家/地区名称",则会引发异常.
然而,此页面指定了包含的类所使用的预定义区域列表United Kingdom
,那么为什么不创建RegionInfo
具有国家/地区名称的新工作呢?
当我尝试创建一个具有某些ISO 3166国家代码的新RegionInfo(孟加拉国的"BD",索马里的"SO",斯里兰卡的"LK"),我得到一个ArgumentException,表示它无法识别.
这是怎么回事?RegionInfo的Intellisense(字符串)表示它符合ISO 3166,但不支持这些国家/地区代码?
我不明白.
有没有办法在C#中找到一个国家的大陆,使用RegionInfo
该类或任何其他方式?
例如,您将国家名称命名为"Denmark",并返回"Europe".
我知道如何通过使用将ISO 3166-2代码转换为完整的英文名称,例如"US"到"United States" RegionInfo
.
但是,我怎么能做相反的事情,即拿"美国"并返回"美国"?
假设我只有国家代码(en,de,fr),我需要以这种语言显示工作日.我知道RegionInfo和CultureInfo - 但我找不到解决方案.如果我从(例如)"en"创建国家/地区信息,则其中没有DateTime信息.只取第一个匹配区域也可以.例如en-US for en或de-de for de.
我不知道DayNames是否存在差异,但我知道这几个月有一些差异.de-DE Februar - de-AT Feber - 无论如何我不在乎.事件,如果它可能"有点不同"(看到Februar而不是Feber) - 它仍然是德国人.
这就是我想要实现的目标 - 在星期一写一封 - 得到de并写Montag ......
有没有办法只从语言代码创建一个区域?
我想知道我的应用程序在哪里使用。
这是获取国家/地区名称和时区的代码:
TimeZone localZone = TimeZone.CurrentTimeZone;
var result = localZone.StandardName;
var s = result.Split(' ');
Console.WriteLine(s[0]);
Console.WriteLine(RegionInfo.CurrentRegion.DisplayName);
Run Code Online (Sandbox Code Playgroud)
但我的问题是,任何人都可以更改时区。根据时区,我可能会得到错误的名字。并且区域设置为美国,无法更改。因为所有用户都有相同的设置,并且我的应用程序有数十万用户。
有什么方法可以读取任何操作系统设置/系统设置并获取使用我的应用程序的当前国家/地区?
c# ×8
regioninfo ×8
cultureinfo ×4
.net ×3
casing ×1
country ×1
currency ×1
iso-3166 ×1
regions ×1