问题标签 [invariantculture]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
825 浏览

c# - 对于不变的日期,强制 DateTime.Parse 失败

我会简短地开始,然后在最后给出细节。考虑以下代码:

问题是是否有任何可能的值cultureToTest会导致DateTime.Parse调用抛出异常或返回错误的值?


语境:

这是一组单元测试。有一段代码在DateTime.Parse没有指定文化的情况下调用。我担心的是,当此代码在 Invariant 或 en-US 文化中传递一个日期时,该代码可能会在某些文化中失败。我提出的解决方案是更改要使用的代码

在这些情况下。

为了对更改进行单元测试,我需要使用会使原始DateTime.Parse(string)代码失败的文化来调用新代码,然后显示更改后的代码将成功。

问题是我还没有找到一种文化可以为我做到这一点。我将尝试制造一个,但我想我会先问更一般的问题。

0 投票
2 回答
12411 浏览

c# - .ToString() 中的 CultureInfo.InvariantCulture

我目前正在修复 FxCop 问题,因此在使用ToString().

目前在我的代码中,我们没有将任何内容作为 IFormatProvider 传递,因此我阅读了一些 msdn 文章,说当您不为cultureinfo 传递任何值时,它将分配一个默认值,当您将 CultureInfo 指定为 InvariantCulture 时,它​​将独立于任何文化。

我的问题是,“默认值和 CultureInfo.InvariantCulture 是否相同?我可以将所有代码从默认值替换为 InvariantCulture 吗?”

前任 :

第二行和第三行是等价的吗?

0 投票
0 回答
289 浏览

user-interface - IIS 如何确定错误消息语言?

我在 IIS 7.5 上运行一个 ASP.NET 网站,其中文化和 UI 文化在设置中设置为不变文化。基于客户端的文化设置为 false。

IIS 服务器在德语 Windows Server 2008 R2 上运行,我的机器运行英语 Windows 8.1,Firefox 设置为首先接受 en-us 内容。

当应用程序生成错误消息时,此消息为德语。我可以通过更改 IIS 上的文化设置来强制它使用英语。无论我是否打开或关闭基于客户的文化,它始终是德语。

在对类似问题的回答中,有人建议不变文化基于英语。因此,我假设错误消息以英语输出。

IIS 如何确定要输出的错误消息的语言?

0 投票
1 回答
243 浏览

c# - 序列化\反序列化 - 我应该使用不变的文化信息还是保留当前的文化信息

在我一头扎进代码之前,我来征求一些建议。

在我正在处理的应用程序上,我遇到了“,”(逗号)与“。” (点)小数分隔符的差异。

当我坚持到一个文件,更改区域设置并重新打开所述文件时,我遇到了反序列化异常。

我的问题如下。

如果我在发生序列化/反序列化的任何地方都使用不变的文化信息,我会再次遇到这个问题吗?在我看来,这应该适用于任何地方,即使区域设置发生变化。我的假设是否正确?

另一个不理想的想法是将当前文化信息与保存的文件关联\持久化。不太好做。

我欢迎任何关于这个问题的建议和见解。如果有任何不清楚的地方,请随时发表评论。

提前感谢您的所有帮助!!

0 投票
1 回答
100 浏览

.net - StringComparer.OrdinalignoreCase 和 StringComparer.InvariantCultureIgnoreCase 的关系

我试图在使用StringComparer.OrdinalignoreCaseand时获取字符串比较结果之间的关系StringComparer.InvariantCultureIgnoreCase。更准确地说,我想知道以下四种说法中哪一种是正确的:

  1. a == b using StringComparer.OrdinalIgnoreCase, 然后a == b using StringComparer.InvariantCultureIgnoreCase
  2. a != b using StringComparer.OrdinalIgnoreCase, 然后a != b using StringComparer.InvariantCultureIgnoreCase
  3. a == b using StringComparer.InvariantCultureIgnoreCase, 然后a == b using StringComparer.OrdinalIgnoreCase
  4. a != b using StringComparer.InvariantCultureIgnoreCase, 然后a != b using StringComparer.OrdinalIgnoreCase

到目前为止,我知道第 3 条陈述是不正确的,因为这个问题中的评论的例子a = STRASSE和评论。b = Straße

理想情况下,我想解释为什么一个陈述是正确的,或者一个不正确的例子。

0 投票
1 回答
54 浏览

c# - 这是安全的,还是只在英语国家有效?

我有这个代码:

...但我想知道它是否仍然适用于德语地区(“Montag”)或西班牙语地区(“Lunes”)。如果不是 - 如果寻找“星期一”是有问题的 - 我怎么能得到一个代表星期几的 int 。即使在这种情况下,0 总是星期天,或者有时是星期一(甚至是其他东西)?

0 投票
1 回答
1810 浏览

java - 如何在 Java 中进行从 int 到 String 的文化不变转换?

为了在 C# 中将整数转换为字符串(具有不变的文化),我们执行如下操作:

在 Java 中是否存在与上述操作等效的操作,或者Integer.toString(int)本质上是否进行文化不变转换?

0 投票
4 回答
1160 浏览

c# - 解析带小数点的值

我有一个来自数据库的金额的字符串值。我系统上的当地文化是葡萄牙语(pt-br)。因此,具有小数值的金额被读取为,例如:3,4 表示 3.4。我需要以显示 3.4 的方式解析它,但无论我尝试什么,我都会得到 34。我已经在每个地方搜索了解决方案并尝试实现以下内容,但徒劳无功。

//这里的row[item.columnName]是我循环的DataTable的行

解决方案1:

解决方案2:

它们似乎都不起作用。有人可以建议我是否有其他方法可以实现这一目标?

编辑:

原来我从数据库中得到的值是十进制类型的,所以我将我的 LOC 更改为以下。

它似乎仍然不起作用,我只是不知道哪里出错了。我在DotNetFiddle上尝试了同样的事情 ,它工作得非常好。下面是我尝试过的代码。

我得到的结果和预期的一样是 1.35。我究竟做错了什么?

0 投票
4 回答
2724 浏览

c# - C#以“DDMMYYYY”格式解析日期?

我正在尝试DDMMYYYY使用以下代码解析格式格式的字符串日期,但即使16062001是格式中的有效日期,它也会返回 false DDMMYYYY

0 投票
3 回答
1017 浏览

c# - 使用其他文化时错误的 DateTime 解析

我在多语言站点中使用 EF 将结果从 SP 映射到对象。

我发现当文化发生变化时映射日期存在问题。

16/12/2015 09:06:15更具体地说,我得到与或相同的日期12/16/2015 09:06:15,具体取决于用户文化。

我知道两种解决方案:

  • 将日期作为字符串获取并使用CultureInfo.InvariantCulture.
  • CultureInfo.CultureInvariant在调用存储库方法之前切换文化。

也许还有另一种选择:

  • 我看到我们同时更改了:Thread.CurrentThread.CurrentUICultureThread.CurrentThread.CurrentCulture用户的语言环境,但我认为我们应该只切换 UI 之一。但我不确定如果我改变它会破坏什么......

有没有其他选择,比如在 EF 上下文中设置文化?


更新:在进行查询之前 更改Thread.CurrentThread.CurrentUICultureandThread.CurrentThread.CurrentCulture似乎也无济于事。这令人困惑......也许 EF 在更早的时候缓存了文化?