Returns +true+ if +self+ and +object+ are equal after Unicode case folding, otherwise +false+: lower = :abc upper = :ABC upper.casecmp?(lower) # => true lower.casecmp?(lower) # => true lower.casecmp?(upper) # => true Returns nil if +self+ and +object+ have incompatible encodings, or if +object+ is not a symbol: sym = 'äöü'.encode("ISO-8859-1").to_sym other_sym = 'ÄÖÜ' sym.casecmp?(other_sym) # => nil :foo.casecmp?(2) # => nil Unlike Symbol#casecmp, works for characters outside of 'A'..'Z' and 'a'..'z': lower = :äöü upper = :ÄÖÜ upper.casecmp?(lower) # => true lower.casecmp?(lower) # => true lower.casecmp?(upper) # => true Related: Symbol#casecmp, String#casecmp?.