2011-06-23 149 views
2

UTF-8编码字符串目前正在寻找直4小时后,我不得不放弃,问你们。 我有一个非常简单的表单,它将采取输入和动作,将其写入我的Oracle DB(支持UTF-8)。我该如何处理我的servlet

<form action="test.jsp" method='GET' accept-charset="UTF-8"> 
    <label for='NAME'>Name</label><input type="text" id="NAME" name="NAME"/> 
    <button type="submit">Submit</button> 
</form> 

所有我想要做的是形式能够接受的字符,如é,并将它们存储在不改变编码。

我已经尝试过(与合并)选项,如设置

request.setCharacterEncoding("UTF-8");

或建设有编码参数一个新的String:

new String(request.getParameter("NAME").getBytes(), "UTF-8")

但它总是在结束了数据库是这样的:�?��??(输入:收藏

任何有关这个问题的帮助将不胜感激。

回答

6

在Tomcat中server.xml,一个URIEncoding="UTF-8"属性添加到您的Connector像这样:

<Connector port="8080" protocol="HTTP/1.1" 
       connectionTimeout="20000" 
       redirectPort="8443" URIEncoding="UTF-8"/> 

documentation状态:

这指定用于解码URI字节的字符编码 , 后%xx解码URL。如果不指定 ,则将使用ISO-8859-1。

可以找到一个有用的(略有相关的)SO帖子here

+0

这实际上做的伎俩!虽然设置request.setCharacterEncoding(“UTF-8”)非常重要,这看起来像太阳信息页看错选择不工作后的形式... – tannerli

+0

感谢您的帮助,顺便说一句:)这是窃听我,因为昨天中午... – tannerli

+0

@tannerli,很高兴一直是帮帮我。顺便说一句,这个编码只对参数进行编码,而不考虑HTTP请求。 –

0

你有过在调试器一看串看起来像插入Java中的数据库之前?如果它不在那里混淆,那它就是数据库的导入功能。你在那里使用哪个wprapper或者工具?

+0

其实,我不知道该怎么调试器连接至我的Tomcat服务器,但我已经尝试过在我能想到的所有方式打印出来到标准输出,它看起来就好像它已经就“炒”我打电话的request.getParameter() – tannerli

+0

什么是你的操作系统和在环境中,这是运行 – Andreas