blu*_*hfx 15 c# java string visual-studio android-studio
我要转换为字符数组的字符串是ষ্টোর它是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相同的结果.
Jer*_*emy 15
这两个数组是unicode等价的,但是由不同的规范化形式表示.似乎正在发生的是Java ToCharArray(或字符串表示)使用一种规范化形式,而C#ToCharArray(或字符串表示)使用另一种规范化形式.
此页面包含孟加拉语文本的不同规范化表单的图表 - 第四行描述了您正在看到的内容:
我现在只是在了解这一点,但在我看来,这样做的动机是,unicode实现可以在任何可能和实际的情况下与预先存在的编码保持兼容.
例如,一个预先存在的编码可能已经使用了单个unicode字符,而另一个预先存在的编码可能已经使用了两个字符组合.因此,unicode人员解决的解决方案是支持两者,代价是没有单一的"规范"表示,就像你在这里遇到的那样.
如果您希望在C#阵列似乎正在使用的"D"规范化表单下规范化Java数组,则此页面似乎提供了这样的功能.您可能正在寻找类似的东西:
someString = Normalizer.normalize(someString, Normalizer.Form.NFD);
Unicode标准附件15是描述这些规范化形式的官方文档.
And*_*eas 10
您必须以不同方式输入字符串.
文本?????是Unicode代码点09B7 09CD 099F 09CB 09B0,即2487 2509 2463 2507 2480,如您的C#所示.
Java显示的值,即2487 2509 2463 2503 2494 2480第四个字符2507/ 09CB作为两个字符2503 2494/ 09C7 09BE.
查找它们,它们是:
ো ''BENGALI VOWEL SIGN O'(U + 09CB)
与
ে↔ 'BENGALI VOWEL SIGN E'(U + 09C7)
া↔ 'BENGALI VOWEL SIGN AA'(U + 09BE)
结合出来的是同一件事:
↔ষ্টোর 09B7 09CD 099F 09CB 09B0
ষ্টোর↔09B7 09CD 099F 09C7 09BE 09B0
它们组合了字符,并且有不同的方法来组合字符以获得相同的结果.
| 归档时间: |
|
| 查看次数: |
861 次 |
| 最近记录: |