8

この質問は、serverfault でずっと前に尋ねられましたが、機能するawnserはありません。それ以来、誰かがそれに遭遇し、解決策を見つけたことを願っています。

例:

<%
Response.Write True
Response.Write "<hr>"
Response.Write "test:" & True
%>

出力:

True
--------------
test:Waar

ご覧のとおり、出力を結合するとすぐにローカル文字列に変換されます (「Waar」はオランダ語で true です)。「True」のままにする必要があります。

どうすればこれを変更できますか? ページの先頭にコードを配置してもかまいませんがTrue、コード全体のすべてのインスタンスを変更することはできません。したがって、以下のような関数を作成して正しい文字列を返すことはできません。

Function PB(pVal)
  If pVal Then
    PB = "true"
  Else
    PB = "false"
  End If
End Function
4

8 に答える 8

4

奇妙なことに、どのロケールが設定されていても、IIS にローカル言語でブール値を出力させることができません。

このKB 記事は既に見つかりましたか?

トリックを実行できるレジストリ設定の説明があります。

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\OLEAUT

本番サーバーをいじりたくないので、まだ試していません。


最初の答え:

VB を「だまして」独自の関数を使用することができます。これらの関数をページの上部に追加すると、VB は組み込み関数よりもこれらの関数を優先しますCStr。この場合はTrim. たぶんこれが役立ちます。

    Function PB(pVal)
        If pVal Then
            PB = "true"
        Else
            PB = "false"
        End If
    End Function

    Function CStr(pVal)
        CStr = PB(pVal)
    End Function

    Function Trim(pVal)
        Trim = PB(pVal)
    End Function

出力:

    True
    --------------
    test:true
    --------------
    test:true
    --------------
    test:true
于 2013-04-22T15:39:40.180 に答える
2

SetLocale が機能しない場合は、関数を作成するのが最善の策だと思います。

Function TF(B)
   If B Then
      TF = "True"
   Else
      TF = "False"
   End If
End Function

次に、これを言う代わりに:

Response.Write "test:" & True

あなたはこう言うでしょう:

Response.Write "test:" & TF(True)
于 2013-04-18T13:01:08.980 に答える
0

地域の設定を米国の設定に変更してもかまわない場合の解決策を見つけました。これには、レジストリの変更が含まれます。これは Windows 7 のスペイン語でテストされており、Verdadero/Falso の代わりにネイティブの True/False を提供するようになりました。

  1. HKEY_USERS/.Default/Control Panel/International に移動し、失敗した場合に備えて携帯電話で素敵な写真を撮ります。[国際] をクリックし、[ファイル/エクスポート] をクリックして、レジストリ キーのバックアップを作成することもできます。

  2. メモ帳を開き、これを貼り付けます (または、レジストリで値を 1 つずつ手動で変更することもできます)。

----------------- この行の下にあるものを貼り付けます -------------

Windows Registry Editor Version 5.00

[HKEY_USERS\.DEFAULT\Control Panel\International]
"Locale"="00000409"
"LocaleName"="en-US"
"s1159"=""
"s2359"=""
"sCountry"="United States"
"sCurrency"="$"
"sDate"="/"
"sDecimal"="."
"sGrouping"="3;0"
"sLanguage"="ENU"
"sList"=","
"sLongDate"="dddd, MMMM dd, yyyy"
"sMonDecimalSep"="."
"sMonGrouping"="3;0"
"sMonThousandSep"=","
"sNativeDigits"="0123456789"
"sNegativeSign"="-"
"sPositiveSign"=""
"sShortDate"="M/d/yyyy"
"sThousand"=","
"sTime"=":"
"sTimeFormat"="h:mm:ss tt"
"sShortTime"="h:mm tt"
"sYearMonth"="MMMM, yyyy"
"iCalendarType"="1"
"iCountry"="1"
"iCurrDigits"="2"
"iCurrency"="0"
"iDate"="0"
"iDigits"="2"
"NumShape"="1"
"iFirstDayOfWeek"="6"
"iFirstWeekOfYear"="0"
"iLZero"="1"
"iMeasure"="1"
"iNegCurr"="0"
"iNegNumber"="1"
"iPaperSize"="1"
"iTime"="0"
"iTimePrefix"="0"
"iTLZero"="0"

[HKEY_USERS\.DEFAULT\Control Panel\International\Geo]
"Nation"="244"

----------------- この行は貼り付けないでください -------------

  1. それをenglish.reg(またはwhatever.reg)として保存します

  2. ダブルクリックします。

変更を有効にするためにコンピューターを再起動する必要はありませんでした。

- - - - アップデート - - - - -

動作しません。これで空白の ASP ページを作成すると: <%=isnumeric(6)%> それは True (英語) と答えますが、文字列に True を連結するとすぐに Verdadero になります。

于 2015-09-01T06:01:36.363 に答える