Freemarker 如果使用特定关键字的土耳其语条件失败
Freemarker if condition fail on Turkish language with specific keyword
我正在比较变量和值。结果似乎与我尝试过的语言不同 Swedish/English/Dutch/Portugese 和土耳其语。
<#assign fm_bidBucket>Install</#assign>
<#assign _text><#if fm_bidBucket?trim?lower_case == "both">both-<#elseif fm_bidBucket?trim?lower_case == "install">install-<#else>else-</#if></#assign>
${_text}
Output:
In case of any language: install-
In case of Turkish language: else-
但是如果我们用 upper_case 而不是小写来改变条件,它就会按预期工作。
<#assign fm_bidBucket>Install</#assign>
<#assign _text><#if fm_bidBucket?trim?upper_case == "both">both-<#elseif fm_bidBucket?trim?upper_case == "install">install-<#else>else-</#if></#assign>
${_text}
Output:
In case of any language: install-
In case of Turkish language: install-
或者如果我们更改条件的内容,那么它工作正常。
<#assign fm_bidBucket>Siddharth</#assign>
<#assign _text><#if fm_bidBucket?trim?lower_case == "both">both-<#elseif fm_bidBucket?trim?lower_case == "siddharth">install-<#else>else-</#if></#assign>
${_text}
Output:
In case of any language: install-
In case of Turkish language: install-
我无法追踪为什么我在土耳其语言环境和文本 "install" 的情况下得到不同输出的问题 "install"。
另外,想知道在任何其他语言环境中是否有任何其他角色像这样工作。
我也在 http://try.freemarker.org/ 上试过 运行 这段代码,得到了类似的回应。
您刚刚遇到了著名的土耳其语言环境错误。
土耳其语包含 i
(Unicode LATIN SMALL LETTER I)和 ı
(Unicode LATIN SMALL LETTER DOTLESS I),ı
是 [= 的小写字母13=]。
例如"INSTALL".toLowerCase()
等于"ınstall"
,不同于"install"
。
String.toLowerCase
and String.toUpperCase
.
的 javadoc 中有记载
还有一个 bug report 说这个问题也可能发生在阿塞拜疆语言环境 (az_AZ) 上。我知道的唯一可能导致问题的其他字符是德语 ß
.
我正在比较变量和值。结果似乎与我尝试过的语言不同 Swedish/English/Dutch/Portugese 和土耳其语。
<#assign fm_bidBucket>Install</#assign>
<#assign _text><#if fm_bidBucket?trim?lower_case == "both">both-<#elseif fm_bidBucket?trim?lower_case == "install">install-<#else>else-</#if></#assign>
${_text}
Output:
In case of any language: install-
In case of Turkish language: else-
但是如果我们用 upper_case 而不是小写来改变条件,它就会按预期工作。
<#assign fm_bidBucket>Install</#assign>
<#assign _text><#if fm_bidBucket?trim?upper_case == "both">both-<#elseif fm_bidBucket?trim?upper_case == "install">install-<#else>else-</#if></#assign>
${_text}
Output:
In case of any language: install-
In case of Turkish language: install-
或者如果我们更改条件的内容,那么它工作正常。
<#assign fm_bidBucket>Siddharth</#assign>
<#assign _text><#if fm_bidBucket?trim?lower_case == "both">both-<#elseif fm_bidBucket?trim?lower_case == "siddharth">install-<#else>else-</#if></#assign>
${_text}
Output:
In case of any language: install-
In case of Turkish language: install-
我无法追踪为什么我在土耳其语言环境和文本 "install" 的情况下得到不同输出的问题 "install"。
另外,想知道在任何其他语言环境中是否有任何其他角色像这样工作。
我也在 http://try.freemarker.org/ 上试过 运行 这段代码,得到了类似的回应。
您刚刚遇到了著名的土耳其语言环境错误。
土耳其语包含 i
(Unicode LATIN SMALL LETTER I)和 ı
(Unicode LATIN SMALL LETTER DOTLESS I),ı
是 [= 的小写字母13=]。
例如"INSTALL".toLowerCase()
等于"ınstall"
,不同于"install"
。
String.toLowerCase
and String.toUpperCase
.
还有一个 bug report 说这个问题也可能发生在阿塞拜疆语言环境 (az_AZ) 上。我知道的唯一可能导致问题的其他字符是德语 ß
.