JDK-8049038 : In turkish locale, String.equalsIgnoreCase() returns "true" for character \u0130 and \u0131.
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.lang
  • Affected Version: 8u20
  • Priority: P3
  • Status: Resolved
  • Resolution: Not an Issue
  • Submitted: 2014-07-02
  • Updated: 2014-07-02
  • Resolved: 2014-07-02
Related Reports
Relates :  
Description
In Turkish,  \u0130(��) and \u0131(��) are different characters, when using String.equalsIgnoreCase(), it should return false.

In following cases, it should all return false, but it returns true: (tested with 1.8.0_20 b20)

"\u0130".equalsIgnoreCase("\u0049")
"\u0069".equalsIgnoreCase("\u0131")
"\u0130".equalsIgnoreCase("\u0131")
"\u0069".equalsIgnoreCase("\u0049")
Comments
String.equalsIgnoreCase() is a locale insensitve method. It compares two strings based on the logic in the javadoc, which checks the length and compares each character which is locale insensitive. Thus all those test cases should return true.
02-07-2014