我在一个工作站上运行了一个经典ASP应用程序,该工作站带有带有IIS 7.5的丹麦版本的Windows 7。
问题是:当应用程序将布尔值写入字符串时,它将在英文服务器上写入"True“或"False”。然而,在我的丹麦装置上,它将写出“沙子”和“法尔斯克”。
想要的解决方案:我需要的是知道工作站/iis/configuration上的特定设置,确定它写出布尔值的语言,以确保它总是用英语写出布尔值。
如有任何建议,将不胜感激。谢谢。
发布于 2011-05-29 23:41:04
我不知道旧的OLEAUT地区设置是否适用,但我认为值得一试--看看你得到了什么。
http://support.microsoft.com/kb/271587
SetVarConversionLocale应设置为2,默认区域设置设置为美式英语。
如果这不起作用,并且您不能在应用程序中更改代码,那么运行一个带有美国英语操作系统的虚拟机。你并没有明确排除:)
发布于 2011-05-29 23:46:55
在控制面板中更改区域设置时,您正在为用户配置文件执行此操作;但IIS辅助进程通常在其他用户上下文中运行,具体取决于应用程序池的配置(S)。您应该尝试更改这些帐户的区域设置(S)。
发布于 2017-06-02 05:47:54
注意:我还将此解决方案发布到:https://stackoverflow.com/questions/15760035/boolean-values-in-local-language/44321629#44321629
嗨,
我在这个“问题”上也被“抓到”了。事实上,这不是一个问题:
在SQL语句中使用布尔数据时,我也遇到了同样的问题。在我的法语服务器上,我的SQL语句如下:
<%
'Set my boolean value
Dim myBoolean
myBoolean = True
'Set my SQL Statement
Dim MySQLStatement
MySQLStatement = "SELECT * FROM MyTable WHERE MyBooleanField = " & myBoolean
'=> Here, as MySQLStatement is a STRING, the boolean data was "converted/rendered" as a localized string. So that leads to this output :
'=> SELECT * FROM MyTable WHERE MyBooleanField = Vrai
'Obviously, that SQL Statement is incorrect, because the SQL Engine does NOT understand what is the "Vrai" word - It should be "True" instead.
%>在大量阅读论坛线程之后,解决方案是不更改Windows上的区域设置,也不更改注册表键,也不更改Session.LCID,.绝对的和只使用代码的解决方案是将布尔值(真假)转换为整数(0\\1)。然后,这个Integer将安全地在一个字符串中使用,并且将保持(0\\1)。
以下是以非本地化形式使用/转换/呈现布尔值的安全方法:使用整数值。
<%
'Set my boolean value
Dim myBoolean
myBoolean = True
'Set my SQL Statement
Dim MySQLStatement
MySQLStatement = "SELECT * FROM MyTable WHERE MyBooleanField = " & BoolToInt(myBoolean)
'=> Here, as MySQLStatement is a STRING, and as the boolean data was previously "converted/rendered" as an integer, we got this correct SQL Statement :
'=> SELECT * FROM MyTable WHERE MyBooleanField = 1
'This SQL Statement is correct, as the SQL Engine DOES understand that 1 is a boolean.
'This Function Returns an INTEGER value based on a BOOLEAN value
Function BoolToInt(v)
'INPUT:
'v Boolean value
'OUTPUT:
'Integer (0|1)
Dim b_OUT
b_OUT = v
'If the Input value is a "True" boolean value (in any language)
if (b_OUT = True) then
BoolToInt = cint(1)
'If the Input value is a "False" boolean value (in any language)
elseif (b_OUT = False) then
BoolToInt = cint(0)
end if
End Function 'BoolToInt
%>我真的希望它能拯救你的一天!
https://serverfault.com/questions/274964
复制相似问题