CA1305 区域问题,老多的警告了,求解,来者有分

lfcms 2009-07-26 04:35:08
在web.config中设置了

<globalization requestEncoding="utf-8" responseEncoding="utf-8" uiCulture="zh-CHS" enableClientBasedCulture="false" culture="zh-CHS" />


可警告依然存在

警告 5 CA1305 : Microsoft.Globalization : 由于 'Convert.ToInt32(object)' 的行为可能因当前用户的区域设置不同而不同,请将 'LFSqlDBItem.ToInt()' 中的此调用替换为对 'Convert.ToInt32(object, IFormatProvider)' 的调用。如果要向用户显示 'Convert.ToInt32(object, IFormatProvider)' 的结果,请将“CultureInfo.CurrentCulture”指定为“IFormatProvider”参数;另外,如果软件将存储和访问此结果(例如,要将它保留到磁盘或数据库中),则指定“CultureInfo.InvariantCulture”。

小弟初学,大侠们多讲几句,为答谢各位眷顾,来者有分。谢谢赐教。
...全文
725 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
akpeter 2009-07-26
  • 打赏
  • 举报
回复
学习了
lfcms 2009-07-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 net_lover 的回复:]
using System.Globalization;

CultureInfo culture = new CultureInfo("zh-CN");
result = System.Convert.ToDateTime(LFObject,culture );

[/Quote]

嗯这下没有警告了 ,不过我清楚为什么 在web.config 中设置无效呢?
wuyq11 2009-07-26
  • 打赏
  • 举报
回复
CultureInfo 实现全球化
wuyq11 2009-07-26
  • 打赏
  • 举报
回复
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Globalization", "CA1305:SpecifyIFormatProvider")]
string.Format在内部使用CultureInfo对字符串进行处理,如果不指定CultureInfo,会使用当前线程的CultureInfo。因此,在不同的区域设置中,同样的代码可能会产生不同的结果。如DateTime.ToString(IFormatProvider)在不同的区域设置中会产生完全不同形式的结果,string.Format的原理与之相同。

因此,代码分析建议将string.Format替换为带有IFormatProvider参数的重载形式,就是希望在国际化软件中,对于不同的区域设置也能产生相同的结果。当然,如果您的软件肯定不是国际化的,不使用IFormatProvider也无妨。


missukiss02 2009-07-26
  • 打赏
  • 举报
回复
既然有分。哈哈
孟子E章 2009-07-26
  • 打赏
  • 举报
回复
using System.Globalization;

CultureInfo culture = new CultureInfo("zh-CN");
result = System.Convert.ToDateTime(LFObject,culture );


lfcms 2009-07-26
  • 打赏
  • 举报
回复

/// <summary>
/// 将原始数据(obj)转换成日期时间(DateTime)
/// </summary>
public DateTime ToDateTime()
{
DateTime result = DateTime.Now;
if ((LFObject != null) && (!string.IsNullOrEmpty(LFObject.ToString())))
result = System.Convert.ToDateTime(LFObject);
return result;
}

警告 3 CA1305 : Microsoft.Globalization : 由于 'Convert.ToDateTime(object)' 的行为可能因当前用户的区域设置不同而不同,请将 'LFSqlDBItem.ToDateTime()' 中的此调用替换为对 'Convert.ToDateTime(object, IFormatProvider)' 的调用。如果要向用户显示 'Convert.ToDateTime(object, IFormatProvider)' 的结果,请将“CultureInfo.CurrentCulture”指定为“IFormatProvider”参数;另外,如果软件将存储和访问此结果(例如,要将它保留到磁盘或数据库中),则指定“CultureInfo.InvariantCulture”。


/// <summary>
/// 将原始数据(obj)转换成整形(Int32)
/// </summary>
public int ToInt()
{
int result = 0;
if ((LFObject != null) && (!string.IsNullOrEmpty(LFObject.ToString())))
result = System.Convert.ToInt32(LFObject);
return result;
}

警告 5 CA1305 : Microsoft.Globalization : 由于 'Convert.ToInt32(object)' 的行为可能因当前用户的区域设置不同而不同,请将 'LFSqlDBItem.ToInt()' 中的此调用替换为对 'Convert.ToInt32(object, IFormatProvider)' 的调用。如果要向用户显示 'Convert.ToInt32(object, IFormatProvider)' 的结果,请将“CultureInfo.CurrentCulture”指定为“IFormatProvider”参数;另外,如果软件将存储和访问此结果(例如,要将它保留到磁盘或数据库中),则指定“CultureInfo.InvariantCulture”。

wuxiupeng 2009-07-26
  • 打赏
  • 举报
回复
上面的net_lover一定是高手吧! 久仰大名!微软最有价值专家MVP(Most Valuable Professional)
回答问题:
1. 你是不是使用的是vs自带的本地化工具
2. 在Web.config 配置节点 指定一种语言
<system.web>
 <globalization culture="es-ES" uiCulture="es">
</system.web>
3. 在页面中指定一种语言
<%@ Page UICulture="zh-CHS" Culture="zh-CHS">
4. 参考 网址 http://msdn.microsoft.com/zh-cn/library/h6270d0z.aspx
孟子E章 2009-07-26
  • 打赏
  • 举报
回复
你的代码的问题,就是说你的代码不严格,可能会存在不同的结果。建议你贴代码看看
dong547785510 2009-07-26
  • 打赏
  • 举报
回复
有点没有看懂。学习啊。
yj605528638 2009-07-26
  • 打赏
  • 举报
回复
学习了
lfcms 2009-07-26
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 bwangel 的回复:]
为什么要考虑什么区域问题,这些本该是系统默认就配置好了的.

至少我的系统从来没考虑过这个问题.
[/Quote]
这都是 VS 代码分析发出的警告。
bwangel 2009-07-26
  • 打赏
  • 举报
回复

为什么要考虑什么区域问题,这些本该是系统默认就配置好了的.

至少我的系统从来没考虑过这个问题.
wl_bdqn 2009-07-26
  • 打赏
  • 举报
回复
学习
lfcms 2009-07-26
  • 打赏
  • 举报
回复
UP
WInScar 2009-07-26
  • 打赏
  • 举报
回复
是否能将问题再稍微讲的详细些呢?
sunshine_anycall 2009-07-26
  • 打赏
  • 举报
回复
up

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧