Java 如何检查字符串的字符集是否与设备的字符集相同';s集合语言
我想检测字符串是否包含设备语言字符以外的字符 可能吗Java 如何检查字符串的字符集是否与设备的字符集相同';s集合语言,java,android,Java,Android,我想检测字符串是否包含设备语言字符以外的字符 可能吗 我的一些应用程序用户用阿拉伯语编写,其余用户用英语编写。只有当文本为阿拉伯语且用户设备为英语或其他语言时,我才需要翻译文本。您可以通过 Locale.getDefault().getDisplayLanguage(); 然后对输入字符串进行检查,查看字符串中的任何字符是否在 \u0600和\u06FF(Unicode中的阿拉伯文字符集),那么它应该可以完成这个任务 是如何检查字符串是否位于特定字符集的答案 public boolean is
我的一些应用程序用户用阿拉伯语编写,其余用户用英语编写。只有当文本为阿拉伯语且用户设备为英语或其他语言时,我才需要翻译文本。您可以通过
Locale.getDefault().getDisplayLanguage();
然后对输入字符串进行检查,查看字符串中的任何字符是否在
\u0600
和\u06FF
(Unicode中的阿拉伯文字符集),那么它应该可以完成这个任务
是如何检查字符串是否位于特定字符集的答案
public boolean isEncoded(String text){
Charset charset = Charset.forName("US-ASCII");
String checked=new String(text.getBytes(charset),charset);
return !checked.equals(text);
}
你所说的“设备语言”是什么意思?听起来这不是关于字符集,而是你感兴趣的字符串是否包含来自特定脚本的字符。您可以使用类似于
string.matches(“.*\\p{IsArabic}.*”)
@VGR什么是IsArabic?它相当于\\p{script=Arabic}
(这也是一个有效的正则表达式)。它匹配Unicode脚本名称为的单个字符。的“Unicode支持”部分有允许的\\p{…}表达式的完整描述。如何检查范围?我认为您的答案几乎满足了我的需要。除非它总是返回true,即使手机的当前语言是阿拉伯语。我需要将Charset.forName动态设置为mobiles语言的任何名称。您知道如何获得它吗?Charset ysb=Charset.defaultCharset();Charset Charset=Charset.forName(ysb.displayName());总是返回False在这种情况下,我认为没有什么比简单地在Unicode的特定范围内执行循环来查看该范围内是否有字符更重要的了。