在应用级别指定 NumberFormat

Posted

技术标签:

【中文标题】在应用级别指定 NumberFormat【英文标题】:Specify NumberFormat at app level 【发布时间】:2014-06-27 12:50:49 【问题描述】:

我正在使用 JsonConvert 和 JsonSerializerSettings 从 JSON 读取数据,我还没有接触过文化。将手机操作系统语言从 en-US 更改为 nl-NL 我丢失了 NumberFormat。是否可以为应用设置 NumberFormat?

using (Stream stream = accessStream.AsStreamForRead((int)accessStream.Size))
                    
                        byte[] content = new byte[stream.Length];
                        await stream.ReadAsync(content, 0, (int)stream.Length);

                        string json = Encoding.UTF8.GetString(content, 0, content.Length);

                        System.Diagnostics.Debug.WriteLine("Read from file: " + json);

                        JsonSerializerSettings serializerSettings = new JsonSerializerSettings();
                        serializerSettings.NullValueHandling = NullValueHandling.Ignore;
                        List<T> objects = JsonConvert.DeserializeObject<List<T>>(json, serializerSettings);

                        return objects;
                    

【问题讨论】:

【参考方案1】:

你可以试试这个:

   Thread.CurrentThread.CurrentUICulture.NumberFormat = new NumberFormatInfo(); // Sets the CurrenUiCulture number format to the default culture neutral format

在 ASP.NET 配置文件中,您还可以使用下一个 section 更改它。好吧,如果不是asp.net应用就无济于事了。

有一个difference between current culture and uiculture - CurrentUiCulture 负责格式化和其他功能,而 CurrentCulture 负责语言和资源。

但你应该知道,这个 sn-p 会改变应用程序中整个主线程的数字格式。并且不会影响其他线程中的数字格式。

离题建议? :

如果您只需要更改Json 序列化-反序列化,那么您应该使用JsonSerializerSettings 的Culture 属性

JsonSerializerSettings serializerSettings = new JsonSerializerSettings() Culture =  CultureInfo.InvariantCulture ;

【讨论】:

我最后用的是JSON,没理由坚持XML。

以上是关于在应用级别指定 NumberFormat的主要内容,如果未能解决你的问题,请参考以下文章

使用地理显示多个标记:意图在指定位置和缩放级别显示地图

Linux--指定运行级别

学中杂记

使用 MKUserTrackingBarButtonItem 时如何指定缩放级别?

RABBIT API 随机ACG图片接口(可指定动画、人物等信息)

给定指定的分贝级别,如何在 R 中创建波浪声音?