CultureInfo.CurrentCulture 不包含正确的值 --> numberformat 问题

Posted

技术标签:

【中文标题】CultureInfo.CurrentCulture 不包含正确的值 --> numberformat 问题【英文标题】:CultureInfo.CurrentCulture does not contain the correct value --> numberformat problems 【发布时间】:2013-09-17 09:19:19 【问题描述】:

我需要将双打写入 wpf mvvm 应用程序中的 csv 文件。 这些双打最初是设置在不变文化中的字符串。 我像这样从服务器端应用程序接收它们并用

解析它们
bool result = double.TryParse(row[0], NumberStyles.Any, CultureInfo.InvariantCulture, out value);  

但是,当我尝试将它们写入 csv 文件("" + valuevalue.ToString()value.ToString(CultureInfo.CurrentCulture)value.ToString(System.Globalization.CultureInfo.CurrentCulture))时,当前的文化似乎是 EN-US 而应该是 NL(荷兰语) )。我的浏览器设置、Windows 设置、键盘设置……都设置为荷兰语,所以当我检查我的区域号码设置时,它包含小数点分隔符“,”,但我的应用程序用“。”分隔小数点。因为文化是 EN-US。

因此,当我编写 csv 文件并在 excel 中打开它时,它包含用“。”分隔的十进制值。代替 ”,”。 这样,我的 excel 不会将这些值视为十进制值,因为它们不在 excel 数字文化/我的 Windows 设置文化中。

有人知道怎么回事吗?

编辑

只是为了清楚。我不是在寻找一种方法来设置硬编码的文化。我特别需要在 windows 中设置的文化,即 excel 使用的文化。

【问题讨论】:

你试过Thread.CurrentThread.CurrentUICulture吗?里面有什么? @GerrieSchenck Thread.CurrentThread.CurrentUICulture 将影响资源的加载方式,而不是格式。我猜你的意思是Thread.CurrentThread.CurrentCulture @Fredrik Mörk 我不知道,我通常用它来做格式化。 OP 表示CurrentCulture 已经是dutch,你应该尝试检查它是否是dutch(当然在你的代码中)。 @GerrieSchenck 我们在这里偏离主题,但简而言之:如果您在没有指定文化的情况下调用ToString,它将使用CurrentCulture 自动格式化。如果您调用ToString 并将CurrentUICulture 传递给该方法,那么当然会使用该文化。 【参考方案1】:

以下是问题所在:

我们有一个相当大的应用程序,它可以覆盖日期时间显示等的文化...一旦将当前线程文化设置为新文化,就无法再访问原来的文化了。

为了能够访问 Windows 文化,我创建了一个属性,该属性在更改为应用程序的用户设置之前记住当前文化,并使用该属性将我的数据导出到 csv 文件。

【讨论】:

【参考方案2】:

你是否重写了 base.InitializeCulture();

下面的示例代码只是为了理解..也许你有一些想法

    if (Session["CurrentUI"] != null)
    
        String selectedLanguage = (string)Session["CurrentUI"];
        UICulture = selectedLanguage;
        Culture = selectedLanguage;

        Thread.CurrentThread.CurrentCulture =
            CultureInfo.CreateSpecificCulture(selectedLanguage);
        Thread.CurrentThread.CurrentUICulture = new
            CultureInfo(selectedLanguage);
    

    base.InitializeCulture();

【讨论】:

感谢您的尝试,但这几乎不是答案,因为我没有会话,也没有会话的 InitializeCulture...

以上是关于CultureInfo.CurrentCulture 不包含正确的值 --> numberformat 问题的主要内容,如果未能解决你的问题,请参考以下文章