gpt4 book ai didi

转换为 unicode 的 java 错误

转载 作者:行者123 更新时间:2023-11-30 03:43:27 25 4
gpt4 key购买 nike

当我将字符串转换为 unicode 时出现 java 异常:

public static boolean sendOutgoingSms(String phoneNumber, String message,
Context context) {
try {
PendingIntent pi = PendingIntent.getActivity(context, 0,
new Intent(), 0);
SmsManager sms = SmsManager.getDefault();
message = Charset.forName("UTF-8").encode(message).toString();
sms.sendTextMessage(phoneNumber, null, message, pi, null);
return true;
} catch (Exception ex) {
Trace.e("Failed to send outgoing sms", ex);
}
return false;
}

错误:

"java.nio.ReadWriteHeapByteBuffer, status: capacity=8 position=0 limit=4"

我是否以错误的方式使用了 Charset,forName?

最佳答案

内部字符串是 Unicode。这里唯一的问题是,java 源文件可以采用多种编码,因此 javac 编译器可以对字符串常量(如 "hi")进行不同的编码。

确保编辑器编译器 使用相同的编码。国际项目的最佳 UTF-8。如果您使用像 ma​​ven 这样的构建基础设施,您可以在那里明确声明它。

然后 String message = "eĥoŝanĝo ĉiuĵaŭde"; 就可以了。

可以使用java工具native2ascii对特殊字符进行编码,所以java源码是纯ASCII,

从 Windows Latin-1 转换为 \uXXXX u 编码(ASCII 保留)。

native2ascii -encoding windows-1252 A.java temp.txt

将 java 反向编码为 UTF-8:

native2ascii -reverse -encoding UTF-8 temp.txt A.java

加题后,我觉得特殊字符的问题出在短信部分。成功很大程度上取决于提供商和接收电话。最好是为相关语言寻求公认的音译:西里尔字母到拉丁字母左右。

关于转换为 unicode 的 java 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15395026/

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