2012-04-26 15 views
15

En Java, el método String toLowerCase usa la configuración regional predeterminada del sistema para determinar cómo manejar las minicargadores. Si estoy bajando un poco de texto ASCII y quiero estar seguro de que esto se procesa como se esperaba, ¿qué configuración regional debo usar?Qué configuración regional debo especificar cuando llamo a String toLowerCase

EDITAR: Principalmente me preocupan los identificadores de programación, como los nombres de tablas y columnas en un esquema. Como tal, quiero que se aplique la carcasa inferior en inglés.

Locale.ROOT afirma que se trata de la configuración regional neutra idioma/país para la configuración regional operaciones sensibles

Locale.ENGLISH presumiblemente también ser una opción segura.

+0

"texto ASCII": ¿realmente quieres decir texto ASCII? ¿O te refieres a "algún texto"? – Raedwald

+0

Me refiero a ASCII. Intentaba dar a entender que no estaba usando ningún carácter no ASCII. He aclarado sobre la pregunta. – mchr

Respuesta

5
es una opción segura para operaciones de caso para cosas como identificadores de lenguaje de programación y partes de URL ya que no implica ninguna regla de carcasa especial y todos los caracteres ASCII de 7 bits en el caso CASTELLANO convierten a 7 bits Caracteres ASCII

Eso no es cierto para todas las demás configuraciones regionales. En turco, los caracteres 'I' e 'i' no se convierten en mayúsculas.

"Dotted and dotless I" explica:

El alfabeto turco, que es una variante del alfabeto latino, incluye dos versiones distintas de la letra I, uno de puntos y la otra sin punto.

En Unicode, U + 0131 es una letra minúscula sin punto i (ı). U + 0130 (İ) es capital i con punto. ISO-8859-9 los tiene en las posiciones 0xFD y 0xDD respectivamente. En la tipografía normal, cuando la minúscula i se combina con otros signos diacríticos, el punto generalmente se elimina antes de agregar el signo diacrítico; sin embargo, Unicode sigue enumerando las secuencias de combinación equivalentes que incluyen el i punteado, ya que lógicamente es el carácter punteado normal i el que se está modificando.

La mayoría de las fundas de software Unicode ı a I y minúsculas İ a i, pero, a menos que estén específicamente configuradas para turco, minúsculas I a i y mayúsculas i a I. Por lo tanto, mayúsculas y minúsculas, o viceversa, cambian las letras.

La lista de excepciones especiales se mantiene a http://unicode.org/Public/UNIDATA/SpecialCasing.txt

# ================================================================================ 

# Turkish and Azeri 

# I and i-dotless; I-dot and i are case pairs in Turkish and Azeri 
# The following rules handle those cases. 

0130; 0069; 0130; 0130; tr; # LATIN CAPITAL LETTER I WITH DOT ABOVE 
0130; 0069; 0130; 0130; az; # LATIN CAPITAL LETTER I WITH DOT ABOVE 

# When lowercasing, remove dot_above in the sequence I + dot_above, which will turn into i. 
# This matches the behavior of the canonically equivalent I-dot_above 

0307; ; 0307; 0307; tr After_I; # COMBINING DOT ABOVE 
0307; ; 0307; 0307; az After_I; # COMBINING DOT ABOVE 

...

+0

"Eso no es cierto para todas las demás configuraciones regionales", que no puede usar ASCII. – Raedwald

+0

¿En qué circunstancias usaría la configuración regional ROOT?He estado usando eso para decir que no quiero que se aplique ningún plegado especial de casos. – mchr

+0

@Raedwald, no estoy seguro de entender. ¿Podría ampliar su comentario? –

2

Si estoy en minúscula parte de texto ASCII y quiere estar seguro de que este es procesado como se esperaba, ¿qué idioma debo usar?

Eso depende de lo que "como se espera" significa para usted. El punto de permitir especificar una configuración regional es que mayúsculas/minúsculas no funciona igual en todos los idiomas, aunque pueden usar las mismas letras. Así que especifique la configuración regional en la que usted y/o sus clientes viven, y probablemente funcionará como lo esperan.

+0

El OP dice "texto ASCII". Como ASCII es útil solo para el texto en inglés, "como se espera" debe significar como se espera en inglés. – Raedwald

Cuestiones relacionadas