gpt4 book ai didi

java - 检查字符串是否可在 Gsm0338 中编码

转载 作者:行者123 更新时间:2023-12-05 07:41:07 24 4
gpt4 key购买 nike

我正在开发一个 SMS 应用程序,我发送 Unicode 字符 (Amharic/G'eez)。我正在使用 this example .网上的方法240 , isEncodeableInGsm0338(),用于检查我是否应该使用其他编码或默认编码。

这里是陷阱。字符串 "የእንግሊዝ ፕሪምየር ሊግ ነህሴ 6 ይጀምራል።" 显然是 Unicode,从该方法返回。我的假设是每个字母的一半。但我不能支持那个理论。如果我将文本更改为 "1.የእንግሊዝ ፕሪምየር ሊግ ነህሴ 6 ይጀምራል።",它会正确检测。

这里发生了什么?

最佳答案

知道了!

line 240 上的方法如下。

 public static boolean isEncodeableInGsm0338(String isoString) {
byte[] isoBytes = isoString.getBytes();
outer:
for (int i = 0; i < isoBytes.length; i++) {
for (int j = 0; j < isoGsm0338Array.length; j++) {
if (isoGsm0338Array[j] == isoBytes[i]) {
continue outer;
}
}
for (int j = 0; j < extendedIsoGsm0338Array.length; j++) {
if (extendedIsoGsm0338Array[j][1] == isoBytes[i]) {
continue outer;
}
}
return false;
}
return true;
}

如您所见,它使用依赖于编码的isoString.getBytes()。解决方案是通过使用 isoString.toCharArray() 获取字符数组来比较每个 char

改变了

byte[] isBytes = isoString.getBytes();

char[] isBytes = isoString.toCharArray();

您可能还想将 isoBytes 命名为其他名称。就像一个魅力。

关于java - 检查字符串是否可在 Gsm0338 中编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45542310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com