我将变量与值进行比较。结果似乎与我尝试瑞典语/英语/荷兰语/葡萄牙语和土耳其语等语言不同。
<#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-
我无法追踪问题,为什么我只能使用土耳其语语言环境并使用文本&#34;安装&#34;来获得不同的输出。
另外,想知道在这样的任何其他语言环境中是否还有其他字符。
我已尝试在http://try.freemarker.org/上运行此代码并得到类似的回复。
答案 0 :(得分:2)
您刚刚遇到了着名的土耳其语区域错误。
土耳其语包含i
(Unicode LATIN SMALL LETTER I)和ı
(Unicode LATIN SMALL LETTER DOTLESS I),ı
是I
的小写字母}。
例如"INSTALL".toLowerCase()
等于"ınstall"
,与"install"
不同。
String.toLowerCase
和String.toUpperCase
的javadoc中记录了它。
还有一个bug report表示问题也可能发生在阿塞拜疆语区域(az_AZ)。我知道唯一可能导致问题的另一个角色是德语ß
。