diff -r ff3d90bb0503 -r 768769e3cddd jdk/src/share/classes/java/util/Locale.java --- a/jdk/src/share/classes/java/util/Locale.java Mon Feb 07 21:34:31 2011 +0300 +++ b/jdk/src/share/classes/java/util/Locale.java Tue Feb 08 09:04:30 2011 -0800 @@ -1265,7 +1265,9 @@ StringBuilder buf = new StringBuilder(); String subtag = tag.getLanguage(); - buf.append(LanguageTag.canonicalizeLanguage(subtag)); + if (subtag.length() > 0) { + buf.append(LanguageTag.canonicalizeLanguage(subtag)); + } subtag = tag.getScript(); if (subtag.length() > 0) { @@ -1294,7 +1296,10 @@ subtag = tag.getPrivateuse(); if (subtag.length() > 0) { - buf.append(LanguageTag.SEP).append(LanguageTag.PRIVATEUSE).append(LanguageTag.SEP); + if (buf.length() > 0) { + buf.append(LanguageTag.SEP); + } + buf.append(LanguageTag.PRIVATEUSE).append(LanguageTag.SEP); // preserve casing buf.append(subtag); }