Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何检查字符串的字符集是否与设备的字符集相同';s集合语言_Java_Android - Fatal编程技术网

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的特定范围内执行循环来查看该范围内是否有字符更重要的了。