首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IIS7.5使用经典ASP将布尔值转换为本地语言中的字符串

IIS7.5使用经典ASP将布尔值转换为本地语言中的字符串
EN

Server Fault用户
提问于 2011-05-29 09:38:21
回答 3查看 3.2K关注 0票数 2

我在一个工作站上运行了一个经典ASP应用程序,该工作站带有带有IIS 7.5的丹麦版本的Windows 7。

问题是:当应用程序将布尔值写入字符串时,它将在英文服务器上写入"True“或"False”。然而,在我的丹麦装置上,它将写出“沙子”和“法尔斯克”。

想要的解决方案:我需要的是知道工作站/iis/configuration上的特定设置,确定它写出布尔值的语言,以确保它总是用英语写出布尔值。

我已经尝试了以下几种方法:

  • 为IIS的ASP配置将LCID设置为2057 (en_GB)。
  • 将控制面板中的设置更改为英文
    • 区域环境
    • 数字和货币格式
    • 非Unicode程序语言

  • 更改IIS中ASP.NET的区域性设置
  • 重新启动工作站。

以下是不可能的解决方案,所以请不要建议这些:

  • 更改应用程序中的任何代码。
  • 用Windows 7的英文版重新安装我的工作站.
  • 更改Windows 7安装语言(不可能,因为我不使用极限语言,也不希望升级)

如有任何建议,将不胜感激。谢谢。

EN

回答 3

Server Fault用户

发布于 2011-05-29 23:41:04

我不知道旧的OLEAUT地区设置是否适用,但我认为值得一试--看看你得到了什么。

http://support.microsoft.com/kb/271587

SetVarConversionLocale应设置为2,默认区域设置设置为美式英语。

如果这不起作用,并且您不能在应用程序中更改代码,那么运行一个带有美国英语操作系统的虚拟机。你并没有明确排除:)

票数 1
EN

Server Fault用户

发布于 2011-05-29 23:46:55

在控制面板中更改区域设置时,您正在为用户配置文件执行此操作;但IIS辅助进程通常在其他用户上下文中运行,具体取决于应用程序池的配置(S)。您应该尝试更改这些帐户的区域设置(S)。

票数 0
EN

Server Fault用户

发布于 2017-06-02 05:47:54

注意:我还将此解决方案发布到:https://stackoverflow.com/questions/15760035/boolean-values-in-local-language/44321629#44321629

嗨,

我在这个“问题”上也被“抓到”了。事实上,这不是一个问题:

问题(示例)

在SQL语句中使用布尔数据时,我也遇到了同样的问题。在我的法语服务器上,我的SQL语句如下:

代码语言:javascript
复制
<%
'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系统上设置哪些区域设置并不重要:基础数据不会发生任何变化。布尔数据类型仍然是布尔型,英文或法文,或德文、俄文、泰文、..or等任何你想要的语言。
  • 事实是,数据只是被呈现为一个本地化的字符串(如日期)。

解决方案

在大量阅读论坛线程之后,解决方案是不更改Windows上的区域设置,也不更改注册表键,也不更改Session.LCID,.绝对的和只使用代码的解决方案是将布尔值(真假)转换为整数(0\\1)。然后,这个Integer将安全地在一个字符串中使用,并且将保持(0\\1)。

以下是以非本地化形式使用/转换/呈现布尔值的安全方法:使用整数值。

代码语言:javascript
复制
<%
'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
%>

我真的希望它能拯救你的一天!

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/274964

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档