我想在骆驼环境中使用Jetty组件。这是我的spring-config.xml的摘录:
...
<bean id="webEnc" class="web.WebEnc" />
<camelContext>
<route>
<from uri="jetty:http://0.0.0.0/enc" />
<process ref="webEnc" />
</route>
</camelContext>
...
这是用于返回的代码String
:
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
public class WebEnc implements Processor{
@Override
public void process(Exchange exchange) throws Exception {
exchange.getOut().setBody("abcäöüß\"€一二三"); //the last three symbols are chinese for '123'
}
}
本地地址有效(http://127.0.0.1/enc),但浏览器无法正确显示字符串(显示为“abcÃÃö¶¼¼Ÿ”,“,a¸€äºŒä¸‰”)。我认为是问题所在是某种编码,如何设置类似'utf-8'的编码?
在这里(http://camel.apache.org/jetty.html)我找不到任何有关编码或字符集或类似内容的提示。
在Łukasz(根据您的时间来算)的帮助和提示之后,我找到了一个很好的解决方案。这迫使Jetty传递字节,而不是字符串:
exchange.getOut().setBody("abcäöüß\"€一二三".getBytes("utf-32"));
为了帮助浏览器显示正确的符号,我这样做:
exchange.getOut().setHeader(Exchange.CONTENT_TYPE, "text/html; charset=utf-32");
我的firefox无法使用utf-32显示中文符号,而使用utf-8则可以。Chrome会同时使用两种编码。
但是实际上我对此并不感兴趣,我的意图是传递字节。getBytes()
做这份工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句