这两天在项目中引入了Pushlet,用来解决Server Push的问题。 不过在使用的过程中,发现Java Client 向 Pushlet Servlet 发送中文内容出错的问题。之后将Pushlet源代码copy到工程目录下,打断点调试,终于找到了问题所在。 在这里将解决方法记录一下:
问题原因:
Pushlet ->Event 对象在做数据转url请求时没有做编码转换:
解决方法:
在ul.justobjects.pushlet.core.Event中找到 toQueryString()
方法,
添加ISO-8859-1 to UTF-8的转换代码:
public String toQueryString() {
String queryString = "";
String amp = "";
for (Iterator iter = getFieldNames(); iter.hasNext();) {
String nextAttrName = (String) iter.next();
String nextAttrValue = getField(nextAttrName);
//将 ISO-8859-1 转成 UTF-8
nextAttrValue = StringUtility.toUTF8(nextAttrValue);
queryString = queryString + amp + nextAttrName + "=" + nextAttrValue;
// After first add "&".
amp = "&";
}
return queryString;
}
ISO-8859-1 转 UTF-8 :
/**
* "ISO-8859-1"格式字符转换成"UTF-8"
* @param str "ISO-8859-1"格式字符
* @return "UTF-8"格式字符
*/
public static String toUTF8(String str) {
try {
str = new String(str.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException ex) {
ex.printStackTrace();
}
return str;
}
分享到:
相关推荐
3. 在发送中文数据时,确保数据已经被正确地编码为字节流,然后再传递给Pushlet进行推送。 在提供的项目说明文档中,应当包含了具体的配置和代码示例,指导如何搭建环境,创建Pushlet服务端和客户端,以及如何处理...
Pushlet 是一个基于 Comet ...总的来说,Pushlet 提供了一个高效且易于集成的解决方案,用于实现服务器端到客户端的数据实时推送。通过正确配置和理解其工作原理,你可以有效地利用 Pushlet 构建实时互动的 Web 应用。
【基于Pushlet_Chat技术的群聊实现及中文乱码问题解决方案】 Pushlet_Chat是一种实时通信技术,常用于构建即时消息系统(IM),尤其在B/S架构中广泛应用。它基于HTTP长连接,通过服务器向客户端推送数据,实现了低...
为了实现服务器到客户端的通知,**Pushlet**提出了几种解决方案: 1. **轮询(Polling)**:客户端定期向服务器发起请求以检查是否有新的数据。这是一种简单的实现方式,但它增加了网络流量,并可能导致较高的延迟。 ...
通过分析这个项目源码,我们可以深入理解Pushlet的工作原理,学习如何在Java中实现消息推送,并解决实际应用中的中文字符处理问题。 总的来说,Pushlet Java 消息实时推送实例是一个很好的学习资源,它不仅展示了...
- **Pushlet的二次开发**:《(zt)Pushlet的二次开发(二).htm》和《(zt)Pushlet的二次开发(三).htm》是关于如何扩展和定制Pushlet的教程,涵盖了可能遇到的问题和解决方案,为有经验的开发者提供了进一步的实践指导...