Tag: 全球化

如何在ASP.Net Core 1.1中响应.Cookies.Append()?

我正在尝试将Globalization添加到Intranet应用程序,使用cookie来允许用户使用文化偏好。 中间件已设置并运行但我遇到了基于UI选择附加到cookie的问题。 该方法直接来自Asp.Net Core文档,如下所示: public void ConfigureServices(IServiceCollection services) { services.Configure( options => { var supportedCultures = new List { new CultureInfo(“en-US”), new CultureInfo(“en-GB”), new CultureInfo(“fr-FR”), new CultureInfo(“es-ES”) }; options.DefaultRequestCulture = new RequestCulture(culture: “en-GB”, uiCulture: “en-GB”); options.SupportedCultures = supportedCultures; options.SupportedUICultures = supportedCultures; }); services.AddLocalization(); services.AddMvc(config => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); config.Filters.Add(new AuthorizeFilter(policy)); […]

.NET从hex值的字符串转换为Unicode字符(支持不同的代码页)

我有一串Hex值…… String hexString = “8A65”; 我需要将此字符串转换为它们的Unicode等价物。 棘手的部分是我需要支持不同的代码页,一些代码页有’8A65’=一个字符,而其他代码页将它转换成两个字符。 在我需要执行转换之前,我不知道将使用哪个代码页。 我尝试过各种各样的东西,比如 byte[] original = Encoding.Unicode.GetBytes(hexString); byte[] conv= Encoding.Convert(Encoding.Unicode, Encoding.GetEncoding(932), orig); char[] chars = Encoding.GetEncoding(932).GetChars(conv); 注意:代码页932是日语 解 string hexString = “8A65”; int length = hexString.length; byte[] bytes = new byte[length / 2]; for (int i = 0; i < length; i += 2) { bytes[i / 2] = […]

DateTime.AddDays与Calendar.AddDays

DateTime.AddDays和Calendar.AddDays什么区别? DateTime类型日历是独立的吗?

如何在.NET中检查存在的文化

我有这个代码,当我试图不存在文化时,我得到例外。 是否存在类似TryGetCultureInfo方法,它返回bool值? 我不想使用try-catch语句 CultureInfo culture = CultureInfo.GetCultureInfo(cultureCode); if (culture == null) { culture = CultureInfo.GetCultureInfo(DefaultCultureCode); }

为什么我会得到“文化不受支持”以及如果有什么,我该怎么做呢?

我在这里的“返回”行有一个断点: [HttpGet] [Route(“api/Test/{id1}/{id2}”)] public NRBQEntity GetTestMessage(String id1, String id2) { return NRBQClient.GetTestMessage(id1, id2); } 虽然它没有崩溃应用程序,当我达到这一点,我得到, “ Exception:Thrown:”不支持文化。“(System.Globalization.CultureNotFoundException)抛出了System.Globalization.CultureNotFoundException:”不支持文化。 “ 试图支持哪种文化,为什么不支持这种文化,以及我应该做些什么来支持这种文化? UPDATE 回答斯潘利: 除了代表“BarbeQue的新骑士”之外,它还是一个“骨架”(现在)实体,看起来像这样: public class NRBQEntity { public NRBQEntity() { } public String Value { get; set; } } 更新2 对AnotherUser的回答: 这不是我的代码,所以我只是在试图理解它; 它作为一个起点提供给我复制/重构现有的独立项目,并将其纳入“解决方案”。 已经说过,回答你的问题,这里是解决方案中“GetTestMessage()”的所有实例: [HttpGet] [Route(“api/Test/{id1}/{id2}”)] public NRBQEntity GetTestMessage(String id1, String id2) { return NRBQClient.GetTestMessage(id1, id2); […]

应该将exception消息全球化

我正在开展一个项目,我刚开始做全球化应用程序所需的所有工作。 经常出现的一件事是是否全局化exception消息,但确保string.Format使用CultureInfo.CurrentCulture而不是CultureInfo.InvariantCulture。 此外,这意味着exception消息将存储在可以标记为特定于文化的资源文件中。 所以问题是,exception消息应该全球化还是应该留在InvariantCulture或作者的国家; 在我的情况下en-US。

我应该何时指定CurrentCulture或InvariantCulture以及何时不指定?

指定CurrentCulture或InvariantCulture而不指定文化的最佳做法是什么? 例如,根据我的阅读,如果您正在进行序列化,则需要使用InvariantCulture作为指定数据值的规范表示的方法。 这是基于文化的字符串操作的相对较小的百分比。 我发现它很长,很冗长,而且大多数时候都是丑陋的,每次我都说出来,比如说: var greeting = string.Format(CultureInfo.CurrentCulture, “Hello “, userName); 然而,我的团队最近开启了FxCop,现在总是在每个地方都使用CultureInfo。 结合简洁性,可读性和function性的最佳技术是什么? 一些好的阅读材料: 使用InvariantCulture属性 CultureInfo类

本地化:如何将文化信息映射到脚本名称或Unicode字符范围?

我需要一些有关本地化的信息。 我正在使用带有C#2.0的.net 2.0来处理大多数与本地化相关的问题。 但是,我需要在一个特定的屏幕上手动绘制屏幕上当前文化对应的字母。 这类似于Microsoft Outlook中的“联系人”屏幕(“联系人”下的“地址卡”视图或“详细地址卡”视图),因此需要右端的按钮列,每个字母表一个。 我试图模仿,但我不想让用户选择脚本。 如果说现在的文化,中文,我想画中文字母。 当用户将文化信息更改为英语(并且当他重新启动应用程序时)我想要绘制英文字母。 希望您了解我在这个查询中的位置。 我可以确定当前用户的文化(Application.CurrentCulture或System.Globalization.CultureInfo.CurrentCulture将提供与文化相关的信息)。 我还有所有脚本来呈现字母表。 但是,问题是我不知道如何将文化信息映射到脚本的名称。 换句话说,有没有办法确定与文化相对应的脚本名称? 或者是否可以确定与文化相对应的Unicode字符值的范围? 它们中的任何一个都允许我正确地在按钮上呈现字母。 对此有任何建议或指导是真的很感激。 如果我的方法(或我想要实现的目标)存在根本性的错误,请同时指出。 谢谢你的时间。 PS:我知道最简单的解决方案是将脚本名称配置为用户首选项的一部分,或显示用户可供选择的语言列表(Outlook 2007中的联系人)。 但我只是想看看我是否可以渲染对应于文化的字母表,而无需用户做任何事情。

十进制与千位分隔符串联?

考虑一个Decimal值: Decimal value = -1234567890.1234789012M; 我想将此Decimal值转换为字符串,并包含“千位分隔符” 。 注意:我不想包括千位分隔符 ,我想包括数字分组 。 对于没有将数字分组为数千的文化,或者不使用逗号分隔组,差异很重要 在我的计算机上使用我当前的语言环境输出具有不同标准格式字符串的示例: value.ToString() = -1234567890..1234789012 (Implicit General) value.ToString(“g”) = -1234567890..1234789012 (General) value.ToString(“d”) = FormatException (Decimal whole number) value.ToString(“e”) = -1..234568e++009 (Scientific) value.ToString(“f”) = -1234567890..123 (Fixed Point) value.ToString(“n”) = -12,,3456,,7890..123 (Number with commas for thousands) value.ToString(“r”) = FormatException (Round trippable) value.ToString(“c”) = -$$12,,3456,,7890..123 (Currency) value.ToString(“#,0.#”) = […]

如何使用货币符号将字符串解析为十进制?

我不知道为什么这不起作用: string s = “12,00 €”; var germanCulture = CultureInfo.CreateSpecificCulture(“de-DE”); decimal d; if (decimal.TryParse(s, NumberStyles.AllowCurrencySymbol, germanCulture, out d)) { // i want to get to this point Console.WriteLine(“Decimal value: {0}”, d); }