在服务器迁移过程中,我有点无所适从,因为我将c#程序从一台服务器移到另一台服务器,问题是成千上万的分隔符突然改变而没有做。我的猜测是它的本地化错误,但是我不确定该怎么办。
两台服务器在安装语言方面都是相同的...。
示例: 932 830,00显示在新服务器上,而不是旧服务器上显示的932.830,00
代码:
public void mydo(double difference, string filepath)
{
StringBuilder fileContent = new StringBuilder();
fileContent.AppendLine(" " + String.Format("{0:n}", difference));
using (StreamWriter fileHandler = new StreamWriter(filepath))
{
StringBuilder fileContent2 = new StringBuilder();
fileContent2.AppendLine("<HTML><BODY>");
fileContent2.Append(fileContent.ToString());
fileContent2.AppendLine("</BODY></HTML>");
fileHandler.Write(fileContent2.ToString());
}
}
答案 0 :(得分:1)
似乎同时存在更多问题:
String.Format
或Double.ToString
方法中指定区域性以使用特定区域性。经验法则:始终格式化/解析数字时,请指定区域性(或InvariantCulture
),因为默认区域性来自当前的区域设置,在任何地方都可以不同。"Â "
序列是使用ISO-8859-1或CP1250(Latin1 8位)代码页呈现UTF8文本的典型标志。因此,也许转储的文本为UTF8(这是.NET StreamWriter
类的默认编码),但是如果您不指定HTML4输出的编码,则默认为ISO-8859-1。明确使用一种文化(例如德语)可以解决数字格式问题:
var culture = CultureInfo.GetCultureInfo("de-DE");
fileContent.Append(difference.ToString(culture));
但是,如果网页包含变音字母或其他非ASCII符号,则编码问题将出现在其他位置。确保将StreamWriter
和输出HTML内容都配置为使用相同的编码。
答案 1 :(得分:0)
您可以将系统的语言环境设置回en-US,因为this表示会产生所需的数字格式,由于我对您的服务器配置一无所知,所以我无济于事。或者,您可以使用
绕过系统区域设置String.Format(new CultureInfo("en-US"), "{0:n}", difference);