我有一个经典的ASP应用程序运行在与IIS 7.5 丹麦语版本的Windows 7的工作站上。
问题:当应用程序将一个布尔值作为string写入时,它将在英文服务器上写入“True”或“False”。 但是,在我的丹麦装置上,它会写出“沙”和“Falsk”。
所需的解决scheme:我需要的是要知道我的工作站/ iis /configuration上的哪个特定设置确定哪个语言写出一个布尔值,以确保它总是用英语写出布尔值。
我已经尝试了以下内容:
以下是不可能的决议,所以请不要build议这些:
任何build议将不胜感激。 谢谢。
我不知道旧的OLEAUT区域设置是否适用,但我认为值得一试 – 看看你得到了什么。
http://support.microsoft.com/kb/271587
SetVarConversionLocale应设置为2,默认的区域设置为美国英语。
如果这样做不起作用,并且无法更改应用程序中的代码,请运行带有美国英语操作系统的虚拟机。 你没有具体排除:)
当您在控制面板中更改区域设置时,您正在为您的用户configuration文件执行此操作; 但IIS工作进程通常在其他用户上下文中运行,具体取决于应用程序池的configuration。 您应该尝试更改这些帐户的区域设置。
注意:我也发布了这个解决scheme: 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. %>
经过大量的论坛线程阅读,解决scheme是不改变Windows系统的区域设置,也不改变registry项,也不改变Session.LCID,…绝对和代码的解决scheme是转换布尔值( True | False)为整数(0 | 1) 。 然后,这个整数将在一个string中安全可用,并将保持(0 | 1)。
下面是以非本地化的forms使用/转换/呈现布尔值的安全方法 : 使用整数值 。
<% '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 %>
我真的希望它能拯救你的一天!