Java 如何在GWT客户端获取字符类型?

Java 如何在GWT客户端获取字符类型?,java,json,gwt,unicode,character,Java,Json,Gwt,Unicode,Character,com.google.gwt.json.client.JSONParser.parseStrict(jsonStr)在json字符串包含不可打印/可识别的Unicode字符时引发语法错误。因此,我试图删除客户端中不可打印的Unicode字符。接下来,我尝试在客户端实现这段代码,但是Character.getType(codePoint)与客户端不兼容 有没有办法克服这个问题?有没有其他方法可以在客户端获取字符类型?关于如何解决这个主要问题还有什么建议吗 非常感谢! 大卫 顺便说一句,我尝试使用m

com.google.gwt.json.client.JSONParser.parseStrict(jsonStr)
在json字符串包含不可打印/可识别的Unicode字符时引发语法错误。因此,我试图删除客户端中不可打印的Unicode字符。接下来,我尝试在客户端实现这段代码,但是
Character.getType(codePoint)
与客户端不兼容

有没有办法克服这个问题?有没有其他方法可以在客户端获取字符类型?关于如何解决这个主要问题还有什么建议吗

非常感谢! 大卫


顺便说一句,我尝试使用
my_string.replaceAll(“\\p{C}”,“?”)
code,它在服务器端工作,但在客户端不工作。

您可以添加一个本地JS方法,并在其中使用正则表达式替换每个不可打印的非ASCII字符,如下所示:

private native String replaceUnprintableChars(String text, String replacement) /*-{
    return text.replace(/[^\u0020-\u007E]/g, replacement);
}-*/;


// Somewhere else....
String replacedText = replaceUnprintableChars(originalString, "?");
显示的正则表达式将用
替换字符串替换每个不可打印或非ASCII字符(例如
“?”
)。如果希望包含非ASCII可打印字符(例如,拉丁语),则可以调整表达式以扩大范围

当然,您也可以使用Java正则表达式执行此操作:

text.replaceAll("[^\\u0020-\\u007E]", "?");

但我首先想到了JS解决方案,不知道为什么

您可以添加一个原生JS方法,并在其中使用正则表达式替换每个不可打印的非ASCII字符,如下所示:

private native String replaceUnprintableChars(String text, String replacement) /*-{
    return text.replace(/[^\u0020-\u007E]/g, replacement);
}-*/;


// Somewhere else....
String replacedText = replaceUnprintableChars(originalString, "?");
显示的正则表达式将用
替换字符串替换每个不可打印或非ASCII字符(例如
“?”
)。如果希望包含非ASCII可打印字符(例如,拉丁语),则可以调整表达式以扩大范围

当然,您也可以使用Java正则表达式执行此操作:

text.replaceAll("[^\\u0020-\\u007E]", "?");
但我首先想到了JS解决方案,不知道为什么

番石榴看起来很诱人。我还没有测试过这个,但是这个类被注释了

在番石榴文档的文章中有一个使用指南。

番石榴看起来很不错。我还没有测试过这个,但是这个类被注释了


Guava文档中的文章提供了使用指南。

我已经将
com.google.gwt.json.client.JSONParser.parseStrict(jsonStr)
com.google.gwt.json.client.JSONParser.parselenent(jsonStr)的用法进行了更改
,解析器能够像在服务器端一样处理那些不可打印/可识别的Unicode字符


我觉得使用
JSONParser.parseLenient很舒服,因为
jsonStr
不是来自用户输入。

我改变了
com.google.gwt.json.client.JSONParser.parseStrict(jsonStr)
com.google.gwt.json.JSONParser.parseLenient(jsonStr)的用法
,解析器能够像在服务器端一样处理那些不可打印/可识别的Unicode字符


使用
JSONParser.parseLenient
我感觉很舒服,因为
jsonStr
不是来自用户输入。

我尝试了几种特定字符省略的变体,但在客户端和服务器端都没有帮助。我尝试了几种特定字符省略的变体,但在客户端和服务器端都没有帮助。我不认为这段代码是客户端抱怨。我的问题是删除GWT客户端中的那些字符。令人惊讶的是,当Guava类被@GwtCompatible注释时,这意味着它们是被模拟的。你有没有试过这个,却发现它不起作用?我不认为这个代码是客户投诉。我的问题是删除GWT客户端中的那些字符。令人惊讶的是,当Guava类被@GwtCompatible注释时,这意味着它们是被模拟的。你有没有试过,却发现它不起作用?