In article <[EMAIL PROTECTED]>, Chris <[EMAIL PROTECTED]> writes:

> Hex 80 is equal to octal 200, so why does string-equal give these results?
  ELISP> (string-equal "\200\x80" "\x80\200")
>   t

  ELISP> (string-equal "\200" "\x80")
>   nil

This is another weirdness of multibyte/unibyte mixture.  I
don't remember why but the Lisp reader reads "\200" as a
unibyte string but if \x notation appears in a string, it is
read as a multibyte string.  So, both "\200\x80" and
"\x80\200" are read into the same multibyte string
"\x80\x80".  Thus, the first form returns t.  But, as two
strings differ in multibyteness in the second form, nil is
returned.

FYI, (compare-strings "\200" 0 1 "\x80" 0 1) returns t
because it adjusts multibyteness before comparing.

---
Kenichi Handa
[EMAIL PROTECTED]


_______________________________________________
emacs-pretest-bug mailing list
emacs-pretest-bug@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-pretest-bug

Reply via email to