我要转换成字符数组的字符串是 ষ্টোর,它是 Unicode 和孟加拉语单词。
问题是当我在 Visual studio 中转换它然后它返回 6 个字符 但是当我在 Android Studio 中转换它时然后显示 5 个字符。
在 VS 中,我使用 char[] arrayOfChars = someString.ToCharArray(); 并在 Android Studio char[] arrayOfChars = someString.toCharArray();
N:B:我的 Android Studio IDE 和项目编码是 UTF-8。我期待与 Android Studio 中的 Visual Studio 相同的结果。
最佳答案
这两个数组是unicode equivalent , 但由不同的规范化形式表示。似乎正在发生的事情是 Java ToCharArray
(或字符串表示)正在使用一种规范化形式,而 C# ToCharArray
(或字符串表示)正在使用另一种。
This page包含孟加拉语文本不同规范化形式的图表 - 第四行准确描述了您所看到的内容:
我现在才知道这个,但在我看来,这样做的动机是让 unicode 实现可以尽可能和实际地与预先存在的编码保持兼容。
例如,一种预先存在的编码可能使用了单个 unicode 字符,而另一种预先存在的编码可能使用了两个字符的组合。因此,unicode 人员确定的解决方案是支持两者,代价是没有单一的“规范”表示,正如您在这里遇到的那样。
如果您希望您的 Java 数组在您的 C# 数组似乎正在使用的“D”规范化形式下进行规范化,则看来 this page提供了这样的功能。您可能正在寻找类似的东西:
someString = Normalizer.normalize(someString, Normalizer.Form.NFD);
Unicode standard annex 15是描述这些规范化形式的官方文档。
关于java - 字符串到字符数组在 Visual Studio 和 Android Studio 中返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43217511/