Android 如何避免使用࿽‎;在编辑文本中?

Android 如何避免使用࿽‎;在编辑文本中?,android,android-edittext,Android,Android Edittext,我有一个问题,当用户试图输入文本复制,这个文本有时包含一些特殊字符,如� 这使得JSON字符串不能格式化,所以我怎样才能避免用户输入这样的字符呢 请考虑到用户只能输入阿拉伯语文本和英语文本请尝试在编辑文本上使用InputFilters: InputFilter filter = new InputFilter() { @Override public CharSequence filter(CharSequence source, int start, int e

我有一个问题,当用户试图输入文本复制,这个文本有时包含一些特殊字符,如�

这使得JSON字符串不能格式化,所以我怎样才能避免用户输入这样的字符呢


请考虑到用户只能输入阿拉伯语文本和英语文本

请尝试在编辑文本上使用InputFilters:

InputFilter filter = new InputFilter() {
        @Override
        public CharSequence filter(CharSequence source, int start, int end,
                                   Spanned dest, int dstart, int dend) {
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = start; i < end; i++) {
                if (isEnglishOrArabicChar(source.charAt(i))) {
                    stringBuilder.append(source.charAt(i));
                }
            }
            return stringBuilder.toString();
        }
    };
etName.setFilters(new InputFilter[]{filter});

private static boolean isEnglishOrArabicChar(char c) {
    Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
    return ub == Character.UnicodeBlock.ARABIC || ub==Character.UnicodeBlock.BASIC_LATIN;
}
InputFilter过滤器=新的InputFilter(){
@凌驾
公共CharSequence筛选器(CharSequence源、int开始、int结束、,
跨越目的地、内部数据起点、内部数据起点){
StringBuilder StringBuilder=新的StringBuilder();
for(int i=start;i

尝试在编辑文本上使用InputFilters:

InputFilter filter = new InputFilter() {
        @Override
        public CharSequence filter(CharSequence source, int start, int end,
                                   Spanned dest, int dstart, int dend) {
            StringBuilder stringBuilder = new StringBuilder();
            for (int i = start; i < end; i++) {
                if (isEnglishOrArabicChar(source.charAt(i))) {
                    stringBuilder.append(source.charAt(i));
                }
            }
            return stringBuilder.toString();
        }
    };
etName.setFilters(new InputFilter[]{filter});

private static boolean isEnglishOrArabicChar(char c) {
    Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
    return ub == Character.UnicodeBlock.ARABIC || ub==Character.UnicodeBlock.BASIC_LATIN;
}
InputFilter过滤器=新的InputFilter(){
@凌驾
公共CharSequence筛选器(CharSequence源、int开始、int结束、,
跨越目的地、内部数据起点、内部数据起点){
StringBuilder StringBuilder=新的StringBuilder();
for(int i=start;i

您的json问题可能与输入的字符无关。如果您想解决问题,最好显示一些与您的问题相关的代码。@LoïcFaure Lacroix JSON问题不是我这边的,而是服务器端的,当用户输入这些字符时,服务器API崩溃,所以我没有关于这个问题的任何代码,我只想避免使用除[阿拉伯语字母、英语字母、数字]以外的任何字符看起来像是编码问题。您的json问题可能与输入的字符无关。如果您想解决问题,最好显示一些与您的问题相关的代码。@LoïcFaure Lacroix JSON问题不是我这边的,而是服务器端的,当用户输入这些字符时,服务器API崩溃,所以我没有关于这个问题的任何代码,我只想避免使用除[阿拉伯语字母、英语字母、数字]以外的任何字符看起来像是编码问题。我已尝试了您的代码,edittext不接受任何字符。请输入代码,如果条件相反。现在应该可以了!它现在正在工作,但为什么我不能将文本粘贴到edittext?我可以将文本粘贴到已附加过滤器的edittext上。只需长按edittext并粘贴。我长按了一下,然后单击“粘贴”,什么也没有发生,edittext中没有文本显示,我的android操作系统是7.0,设备类型是三星s6 edgeI。我已经尝试了你的代码,edittext不接受任何字符编辑代码,如果条件相反。现在应该可以了!它现在正在工作,但为什么我不能将文本粘贴到edittext?我可以将文本粘贴到已附加过滤器的edittext上。只需长按edittext并粘贴。我长按了一下,然后单击“粘贴”,什么也没有发生,edittext中也没有文本,我的android操作系统是7.0,设备类型是三星s6 edge