问题:
- <a href="IPAssetAdmin.do? materialDn=<%= material.getDn() %>" >
- <%= material.getName() %>
- </a>
如果material.getDn()是中文,在servlet中通过request.getParameter(name); 得到的值是乱码。
解决方案:
js代码:
- <script language="JavaScript" type="text/JavaScript">
- <!-- add the js function by suqiang to solve the Chinese illegible Characters (only for get method,for example:link) -->
- function linkClick(linkObject) {
-
- var formObject = document.createElement('form');
- document.body.appendChild(formObject);
- formObject.setAttribute('method', 'post');
- var url = linkObject.href;
- var uri = '';
- var i = url.indexOf('?');
-
- if(i == -1) {
- formObject.action = url;
- } else {
- formObject.action = url.substring(0, i);
- }
-
- if( i >= 0 && url.length >= i + 1) {
- uri = url.substring(i + 1, url.length);
- }
-
- var sa = uri.split('&');
-
- for(var i = 0; i < sa.length; i++) {
- var isa = sa[i].split('=');
- var inputObject = document.createElement('input');
- inputObject.setAttribute('type', 'hidden');
- inputObject.setAttribute('name', isa[0]);
- inputObject.setAttribute('value', isa[1]);
- formObject.appendChild(inputObject);
- }
-
- formObject.submit();
-
- return false;
- }
- </script>
超链接调用js代码:
- <a href="IPAssetAdmin.do?type=<%= op %>&materialDn=<%= material.getDn() %>" onclick="return linkClick(this)">
- <%= material.getName() %>
- </a>
reference:
另外:
response.getWriter().write(strHtml);
如果strHtml中含有中文,在jsp/js中接收到的strHtml中含有乱码,解决方案:在write前response设置编码;
response.setContentType("text/html;charset=GB2312"); //add by suqiang to reslove the Chinese Character problem
response.getWriter().write(strHtml);