A.J.Mechelynck wrote:
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.
P.S.
:echo ("ä" == "\xc3\xa4")
outputs 1 (one, i.e., TRUE). I think this proves my conjecture above.
Best regards,
Tony.