标签: cultureinfo

如何在非托管C++中设置文化信息?

我有一个用非托管C++编写的程序,我需要从系统中获取文化信息并将该信息设置为我的c ++应用程序中的当前执行线程.

谢谢.

c++ windows unmanaged cultureinfo

2
推荐指数
1
解决办法
3387
查看次数

Silverlight中的默认字符串格式

例如,我有一个双倍

double d = 4.323d;
Run Code Online (Sandbox Code Playgroud)

我想在Silverlight 4应用程序的TextBlock中显示它,但显示应该是这样的:

4.32

我无法在绑定上更改StringFormat.

唯一的例外是,如果数字是这样的:

double d2 = 4d;
Run Code Online (Sandbox Code Playgroud)

然后它应该显示

4不是4.00.

最糟糕的例外是它应该考虑到当前的UI文化,这意味着如果应用程序在美国部署,它应该使用a .作为小数分隔符,而在欧洲它应该使用a ,(而不是在英国,但你明白了......)

我可以将defaultformat设置为#.##IF我能够更改StringFormat,但我想通过CultureInfo来实现

silverlight cultureinfo currentculture currentuiculture

2
推荐指数
1
解决办法
758
查看次数

C#:NumberDecimalSeparator 何时与 CurrencyDecimalSeparator 不同

我的应用程序允许用户捕获数值。在上下文中,我不知道他们是在获取货币价值还是其他一些数字金额。我需要适应不同的小数点分隔符和分组分隔符,但是我应该从 CultureInfo 中选择哪个?

有谁知道在什么情况下 NumberDecimalSeparator 和 CurrencyDecimalSeparator 可能不同?

c# cultureinfo

2
推荐指数
1
解决办法
1218
查看次数

将CultureInfo对象序列化为另一个类的属性

因此,根据CultureInfo类规范,它是[Serializable].但是,当我有另一个[Serializable]类(比如ClassA)具有对CultureInfo实例的引用时,我尝试使用ClassA创建一个XmlSerializer实例时,我得到一个异常.有人知道一个工作吗?我认为,因为CultureInfo是[Serializable],下面应该可行.

非常感谢!

- 代码 -

using System;
using System.Xml.Serialization;
using System.Globalization;

namespace CultureInfoSerializationTest
{
    class Program
    {
        static void Main(string[] args)
        {
            ClassA aClass = new ClassA();
            aClass.UsedCulture = CultureInfo.CurrentCulture;

            try
            {
                XmlSerializer serializer = new XmlSerializer(typeof(ClassA));
            } catch (Exception e) { }
        }
    }

    [Serializable]
    public class ClassA
    {
        public CultureInfo UsedCulture { get; set; }
    }
}
Run Code Online (Sandbox Code Playgroud)

- 例外 -

System.InvalidOperationException was caught
  HResult=-2146233079
  Message=There was an error reflecting type 'CultureInfoSerializationTest.ClassA'.
  Source=System.Xml
  StackTrace:
       at System.Xml.Serialization.XmlReflectionImporter.ImportTypeMapping(TypeModel model, String ns, …
Run Code Online (Sandbox Code Playgroud)

c# serialization cultureinfo c#-4.0

2
推荐指数
1
解决办法
4151
查看次数

CultureInfo.InvariantCulture in plain english

我知道日期/数字的文化规则对于整本书来说已经足够了,我想我有一个简单的问题.

使用InvariantCulture是否基本上意味着您明确定义将输入/显示的值(日期/数字/等)的文化?它会覆盖任何其他文化设置(例如用户代理的设置)?

如果应用程序是为一个且只有一种文化的受众构建的,那么使用InvariantCulture并定义每次输入/显示值的方式是否合理?

c# culture datetime cultureinfo

2
推荐指数
3
解决办法
3343
查看次数

C# 数据表中的数字格式

我有一个数据表,该数据表中的一些列具有双精度类型的值。

到目前为止一切都很好,但是当我得到该值时,0.0000005它显示了一些 5E-9 指数值。

我需要显示相同的值而不是指数。

我像这样应用了文化信息,但它对我没有帮助:

NumberFormatInfo numberFormat = new NumberFormatInfo();
numberFormat.NumberGroupSeparator = string.Empty;
numberFormat.NumberDecimalDigits = 9;
CultureInfo info = new CultureInfo(CultureInfo.CurrentCulture.Name);
info.NumberFormat = numberFormat;

//data table having data
targetTable.Locale=info;
Run Code Online (Sandbox Code Playgroud)

有人可以帮我吗?

谢谢,

莫罕

c# wpf datatable cultureinfo number-formatting

2
推荐指数
1
解决办法
5439
查看次数

C#CultureInfo.CurrentCulture说en_US但我的Windows设置设置为南非

我在Windows 8.1控制面板中将我的区域/位置更改为南非.当我从Visual Studio 2013启动我的应用程序并获得CultureInfo.CurrentUICulture时,它仍然显示"en-US".

public CultureInfo getCurrentCulture() {
    if (CultureInfo.DefaultThreadCurrentUICulture != null) {
        return CultureInfo.DefaulThreadCurrentUICulture;
    } else {
        return CultureInfo.CurrentUICulture;
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过CultureInfo.CurrentCulture而不是CurrentUICulture,但它们的行为方式相同.如何通过代码确定用户的真实语言环境?或者我是否通过Windows设置错误地设置了区域?

我的应用程序格式化货币字符串等,我需要确保它使用正确的货币符号.南非对我来说是一个很好的用例,因为他们仍然使用英语,但只是有不同的区域数字格式.

c# cultureinfo internationalization .net-4.5 windows-8.1

2
推荐指数
1
解决办法
4916
查看次数

Windows服务无法获得正确的系统文化

从控制面板,我将我的区域和语言设置设置为法语(法国)

当我将应用程序作为控制台应用程序运行时,

Thread.CurrentThread.CurrentCulture 返回法语

但是,当我将它作为Windows服务运行时,它会返回不变的文化或英语(美国)

有办法解决这个问题吗?

.net c# cultureinfo currentculture

2
推荐指数
1
解决办法
3370
查看次数

更改时间跨度毫秒分隔符; 逗号(,)而不是点(.)

我想在本地文化中输出一个时间跨度,将其作为csv导入Excel中.时间跨度包含毫秒.

与英国文化,这意味着,例如00:00:01.2345678
与德国文化,这应该是00:00:01,2345678(逗号而不是点)

但无论我为CultureInfo对象尝试哪种设置,我都无法让它工作:

TimeSpan t = new TimeSpan(12345678);
var cul = CultureInfo.GetCultureInfo("de");
// cul.DateTimeFormat.FullTimeSpanPositivePattern == "d':'h':'mm':'ss','FFFFFFF";
// (note the comma)

Console.WriteLine(String.Format(cul, "{0}", t));
// expected: "00:00:01,2345678" (with ,)
// actual: "00:00:01.2345678" (with .)
Run Code Online (Sandbox Code Playgroud)

到目前为止,我甚至无法分辨CultureInfo类的哪些属性定义了这个.这是硬编码的吗?

我知道我可以明确地定义输出格式:`String.Format("{0:hh \:mm \:ss \,FFFFFFF}",t)

但有没有办法使用a IFormatProvider,所以c#将使用给定的文化?

c# timespan localization cultureinfo .net-4.6

2
推荐指数
1
解决办法
258
查看次数

为什么1000000不等于1000000.toString(“ N”,new CultureInfo(“ fr-FR”))

我围绕字符串转换和货币编写了一些单元测试。

给定CultureInfo方法已通过,我正在测试是否以期望的格式返回字符串。

 public string GetOverspendAmount(double _amount, CultureInfo cultureInfo)
 {
    return amount.ToString("N", cultureInfo);
 }
Run Code Online (Sandbox Code Playgroud)

我正在通过以下调用对这部分代码进行单元测试-

double amount = 1000000;
CultureInfo ci = new CultureInfo("fr-FR", false);

GetOverspendAmount(amount, ci).Should().Be("1 000 000");
Run Code Online (Sandbox Code Playgroud)

但测试失败。预期外观与实际外观相同,但将其放入ascii转换器后,将显示以下结果

Expected - 1 000 000
49 32 48 48 48 32 48 48 48

Actual - 1 000 000
049 194 160 048 048 048 194 160 048 048 048
Run Code Online (Sandbox Code Playgroud)

它们不是普通空间,但我想知道它们是什么,为什么它们不只是普通空间?

c# formatting unit-testing cultureinfo tostring

2
推荐指数
1
解决办法
57
查看次数