Hello A.J.Mechelynck,

Thursday, November 30, 2006, 1:15:14 PM, you wrote:

>?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.

Yes, I agree with your opinion.
When I test it somewhere else, I can not let the "bug" come again sometimes, 
may be some other options can affect the result of the expression.



-- 
Best regards,
 mbbill                            mailto:[EMAIL PROTECTED]

Reply via email to