java string unicode

¿Cuál es la forma preferida de comparar dos Cadenas Java lexicográficamente en*puntos de código Unicode*?



string (1)

Se llama colaciones. Consulte java,text.Collator

Tenga en cuenta que su base de datos también puede ordenar los resultados de su consulta utilizando intercalaciones. Vea, por ejemplo, qué mysql admite https://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html

Para un programa Java que estoy escribiendo, tengo una necesidad particular de ordenar cadenas lexicográficamente por punto de código Unicode. Esto no es lo mismo que String.compareTo() cuando comienza a tratar con valores fuera del plano multilingüe básico. String.compareTo() compara cadenas lexicográficamente en valores char 16 bits. Para ver que esto no es equivalente, tenga en cuenta que U + FD00 ARABIC LIGATURE HAH CON YEH FORMA AISLADA es menor que U + 1D11E SÍMBOLO MUSICAL G CLEF, pero el objeto String Java "/uFD00" para el carácter árabe se compara con el par suplente "/uD834/uDD1E" para la clave.

Puedo recorrer manualmente los puntos de código usando String.codePointAt() y Character.charCount() y hacer la comparación por mí mismo si es necesario. ¿Existe una función de API u otra forma más "canónica" de hacer esto?