使用GB18030编码引发的疑惑...
昨天,由于项目的需要,要处理指定字符串的长度,该字符串包括英文字符和中文字符。其实在.net里要处理这个是非常简单的。如下一句就可搞定:
偶也是在以上信息的基础上,将上述代码中的编码由GB2312更改为GB18030,并在.net1.1下测试OK。之后没考虑太多就将上述代码应用于项目中。
但随后便出现了不良反应,主要表现在:偶尔,系统在执行到该段代码时,浏览器会出现僵死的现象,但IIS却正常。经过debug跟进后发现,程序执行到该段代码时就会自动跳出调试状态并且不会执行接下的代码。进而浏览器表现为僵死的现象,将IIS重起后可解决该问题。但让偶觉得诧异的是,该段代码为什么有时候正常,有时候却会导致上述的问题?
Google了N久也未找出原因,网上看来没有多少和偶一样的难兄难弟......@_@
该问题至今尚未找出原因,项目中也只是暂时不使用GB18030编码,改用GB2312。
int len = System.Text.Encoding.GetEncoding("GB2312").GetBytes(sourceString).Lenth;这样处理的确OK,能满足偶滴需求,但考虑到更长远的需要,偶最后还是选择了GB18030,原因很简单,在Google上以“GB18030”为关键字随便检索一把,你就能找到与以下类似的信息:
GB18030也是对GB2312的扩展,其编码长度由2个字节变为1~4个字节。......值得一提的是,最新的GB18030标准将要作为强制标准实行,所有不支持GB18030标准的软件将不能作为产品出售。
偶也是在以上信息的基础上,将上述代码中的编码由GB2312更改为GB18030,并在.net1.1下测试OK。之后没考虑太多就将上述代码应用于项目中。
但随后便出现了不良反应,主要表现在:偶尔,系统在执行到该段代码时,浏览器会出现僵死的现象,但IIS却正常。经过debug跟进后发现,程序执行到该段代码时就会自动跳出调试状态并且不会执行接下的代码。进而浏览器表现为僵死的现象,将IIS重起后可解决该问题。但让偶觉得诧异的是,该段代码为什么有时候正常,有时候却会导致上述的问题?
Google了N久也未找出原因,网上看来没有多少和偶一样的难兄难弟......@_@
该问题至今尚未找出原因,项目中也只是暂时不使用GB18030编码,改用GB2312。
声明: 本站遵循署名-非商业性使用-相同方式共享4.0共享协议. 转载请注明转自 Knay.Net ™