La cadena que quiero convertir en matriz de caracteres es ষ্টোর, está en Unicode y es una palabra bengalí.
El problema es que cuando lo estoy convirtiendo en Visual Studio , devuelve 6 caracteres, pero cuando lo estoy convirtiendo en Android Studio , muestra 5 caracteres .
En VS estoy usando char[] arrayOfChars = someString.ToCharArray(); y en Android Studio char[] arrayOfChars = someString.toCharArray();


N:B: Mi IDE de Android Studio y la codificación del proyecto son UTF-8. Espero el mismo resultado que Visual Studio en Android Studio.
Esas dos matrices son equivalentes a Unicode , pero están siendo representadas por diferentes formas de normalización. Lo que parece estar sucediendo es que Java ToCharArray (o representación de cadena) usa una forma de normalización, mientras que C# ToCharArray (o representación de cadena) usa otra.
Esta página contiene un gráfico de diferentes formas de normalización para el texto bengalí: la cuarta fila describe exactamente lo que está viendo:
Solo estoy aprendiendo sobre esto ahora, pero me parece que la motivación para esto es que las implementaciones de Unicode puedan seguir siendo compatibles con las codificaciones preexistentes siempre que sea posible y práctico.
Por ejemplo, una codificación preexistente puede haber usado un solo carácter Unicode, mientras que otra codificación preexistente puede haber usado dos caracteres combinados. La solución acordada por la gente de Unicode es, por lo tanto, admitir ambos, a costa de no tener una única representación "canónica", como ha encontrado aquí.
Si desea que su matriz de Java se normalice bajo el formulario de normalización "D" que parece estar usando su matriz de C#, parece que esta página proporciona dicha función. Usted puede estar buscando algo como:
someString = Normalizer.normalize(someString, Normalizer.Form.NFD);
El anexo 15 estándar de Unicode es el documento oficial que describe estos formularios de normalización.
Debe haber ingresado la cadena de manera diferente.
El texto ষ্টোর es puntos de código Unicode 09B7 09CD 099F 09CB 09B0 , es decir, 2487 2509 2463 2507 2480 , como muestra su C#.
Los valores mostrados por Java, es decir, 2487 2509 2463 2503 2494 2480 , tiene el cuarto carácter 2507 / 09CB como los dos caracteres 2503 2494 / 09C7 09BE .
Mirándolos, son:
ো ↔ 'BENGALÍ VOCAL SIGNO O' (U + 09CB)
contra
ে ↔ 'BENGALÍ VOCAL SIGNO E' (U + 09C7)
া ↔ 'SIGNO VOCAL BENGALÍ AA' (U + 09BE)
que combinados da lo mismo:
ষ্টোর ↔ 09B7 09CD 099F 09CB 09B0
ষ্টোর ↔ 09B7 09CD 099F 09C7 09BE 09B0
Están combinando caracteres , y hay diferentes formas de combinar caracteres para obtener el mismo resultado.