mbbill wrote:
I met a very strange problem recently, that is
when I set the following options:
set encoding=utf-8
set ignorecase
then the expression: if "\xe4"=="\xe4" fails.
I test it using:
if "\xe4"=="\xe4"
echo "test"
endif
but I got nothing output, why ?
I confirm this:
:echo ("\xe4" == "\xe4")
outputs 0
I guess the strings, or at least one of them, are not evaluated as "the U+00E4
codepoint, i.e., 0xC3 0xA4" but as "the one-byte string 0xE4, which is not a
valid Unicode codepoint when followed by a null". The latter would be NaS (Not
a String) in evaluations, and give the same kind of strange results as NaN
(Not a Number) in floating-point comparisons.
This conjecture seems to be confirmed by
:echo ("\xe4")
which outputs <e4> in blue, not ä (a-umlaut) in black, which is output by
:echo "ä"
and by
:echo ("\<Char-0xe4>")
Bug or feature?
Best regards,
Tony.