java - 字符串到字符数组在 Visual Studio 和 Android Studio 中返回不同的结果

标签 java c# string visual-studio android-studio

我要转换成字符数组的字符串是 ষ্টোর,它是 Unicode 和孟加拉语单词。

问题是当我在 Visual studio 中转换它然后它返回 6 个字符 但是当我在 Android Studio 中转换它时然后显示 5 个字符

在 VS 中,我使用 char[] arrayOfChars = someString.ToCharArray(); 并在 Android Studio char[] arrayOfChars = someString.toCharArray();

Visual Studio Debugging info

Android Studio Debugging info

N:B:我的 Android Studio IDE 和项目编码是 UTF-8。我期待与 Android Studio 中的 Visual Studio 相同的结果。

最佳答案

这两个数组是unicode equivalent , 但由不同的规范化形式表示。似乎正在发生的事情是 Java ToCharArray(或字符串表示)正在使用一种规范化形式,而 C# ToCharArray(或字符串表示)正在使用另一种。

This page包含孟加拉语文本不同规范化形式的图表 - 第四行准确描述了您所看到的内容:

Bengali table

我现在才知道这个,但在我看来,这样做的动机是让 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/

相关文章:

java - 查找可分配的最大尺寸数组

c# - Dictionary.Clear 和 new Dictionary() 的区别

c# - 获取从任何 sql 语句返回的字段名称

c# - 在关闭主窗体之前关闭侧线程

ios - 如何在 objective-c 中的NSMutablearray中存储字符串变量

java - @MatrixVariable注解的pathVar属性在Spring中如何工作?

java - JPA- hibernate : UniqueConstraint on OneToOne & ManyToOne JoinColumns

c++ - undefined symbol str::string和字符串文字

java - StringUtils.isNumeric 是未定义的方法

c++:使用X Macro在类中定义枚举和字符串数组?