Tomcat's Chinese issue of Java solution

xiaoxiao2021-03-06  107

There are people outside people, there are mountains outside.

I am so stupid, I really know the Chinese problem of Tomcat 5 using the Filter, but I didn't expect to solve the revice.GetParameter () "?" Program is actually modifying conf / server.xml, put This line plus Uriencoding

Turn a best blog that I have seen in the Tomcat Chinese issue, the narrative is clear, the solution is unique.

http://blog.9cbs.net/arielxp/archive/2004/06/23/23874.aspx

Java Chinese problem solving mysql, oracle, servlet, JSP

Copyright Notice: 9CBS is this BLOG managed service provider. If this paper involves copyright issues, 9CBS does not assume relevant responsibilities, please contact the copyright owner directly with the article Author.

The method of the previous handling Tomcat4 is found in Tomcat5 cannot be applied to the request directly through the URL, and the information is found to find the most perfect solution. It doesn't have to be converted every place, and it is normal from GET, and POST. Write a document, posted it, I hope that people who have the same problem are no longer like me :-)

Uploading files have problems, I have to post it directly, ugly :-)

-------------------

Tomcat 5 Chinese problem

Author: kiss__sky@163.com

-------------------

Problem Description:

1 The data submitted by the form is garbled with the string returned by Request.getParameter ("XXX") or? ?

2 Directly via URL such as http: ///localhost/a.jsp? Name = China, such GET requests are garbled when using Request. GetParameter ("name"); Press Tomcat4 to set Filter Or use Request.SetCharacterencoding ("GBK");

the reason:

1 Tomcat J2EE implementation The processing parameters are processed by the default ISO-8859-1.

2 Tomcat The request submitted by the GET method uses the Query-String process using a different way of handling the POST method. (Different from Tomcat4, set the setcharacterenceeEncoding ("GBK").

Solution:

First all JSP files plus:

<% @ Page ContentType = "text / html; charset = GB2312"%>

1 Implement a Filter. Set the processing character set to GBK. (There is a complete example in Tomcat's WebApps / Servlet-Examples directory. Please refer to Web.xml and SetcharacterencodingFilter.)

1) Just copy the% Tomcat installation directory% / webApps / servlets-example / web-inf / class / filter.class file to copy your webapp directory / filters, if there is no Filters directory, create one.

2) In your web.xml, add the following lines:

Set Character Encoding

filters.setCharacterencodingfilter

encoding

GBK

Set Character Encoding

/ *

3) Complete.

2 Get method solution

1) Open Tomcat's server.xml file, find blocks, join the following line:

Uriencoding = "GBK"

Complete should be as follows:

Port = "80" maxthreads = "150" minsparethreads = "25" maxsparethreads = "75"

Enablelookups = "false" redirectport = "8443" acceptcount = "100"

Debug = "0" ConnectionTimeout = "20000"

DisableUploadTimeout = "True"

Uriencoding = "GBK"

/>

2) Restart Tomcat, everything OK.

Perform the following JSP page page test is successful

<% @ Page ContentType = "text / html; charset = GB2312"%>

<% @ Page Import = "java.util. *"%>

<%

String Q = Request.getParameter ("Q");

Q = Q == NULL? "No value": q;

%>

News list Show </ Title></p> <p><Meta http-equiv = content-type content = "text / html; charSet = GB2312"></p> <p><Meta http-equiv = prgma content = no-cache></p> <p><body></p> <p>You are submitted:</p> <p><% = q%></p> <p><br></p> <p><form action = "tcnchar.jsp" Method = "post"></p> <p>Enter Chinese: <input type = "text" name = "q"> <input type = "submit" value = "OK"></p> <p><br></p> <p><a href="tcnchar.jsp?q= 中国"> By GET method submit </A></p> <p></ form></p> <p></ Body> </ html></p> <p>Test Results If you enter a text box or a hyperlink will display: You submit "China", explain success !!!!!</p> <p>Special thanks to this post, help me solve Chinese problems. Finally, I wish you all good luck !!!</p> <p>Reference URL: http://www.javaworld.com.tw/jute/post/view? BID = 9 & id = 44042 & sty = 1 & tpg = 1 & agn = 0</p> <p>The Java Chinese Problem has been plaguing many learners. Summarize some of the following situations.</p> <p>I hope everyone has to help.</p> <p>Connect MySQL Database Server:</p> <p>-------------------------------------------------- -----------------------------</p> <p>MySQL does not support Unicode, so it is more troublesome.</p> <p>Set Connectionstring to Encoding as GB2312</p> <p>String Connectionstring</p> <p>= "JDBC: mysql: // localhost / test? useunicode = true & characterencoding = GB2312"</p> <p>Test code:</p> <p>String str = "Chinese characters";</p> <p>PreparedStatement PSTMT = Conn.PrepareStatement ("INSERT INTO TEST VALUES (?));</p> <p>PSTMT.SetString (1, STR);</p> <p>PSTMT.ExecuteUpdate ();</p> <p>Database table:</p> <p>Create Table Test</p> <p>Name char (10)</p> <p>)</p> <p>Connect Oracle Database Server</p> <p>-------------------------------------------------- -----------------------------</p> <p>Do the following conversion operation before inserting the Chinese character string into the database:</p> <p>String (Str.GetBytes ("ISO8859_1"), "GB2312")</p> <p>Test code:</p> <p>String str = "Chinese characters";</p> <p>PreparedStatement PSTMT = Conn.PrepareStatement ("INSERT INTO TEST VALUES (?));</p> <p>PSTMT.SetString (1, new string (str.getbytes ("ISO8859_1"), "GB2312");</p> <p>PSTMT.ExecuteUpdate ();</p> <p>Servlet</p> <p>-------------------------------------------------- -----------------------------</p> <p>In the beginning of the servlet, plus two sentences:</p> <p>Response.setContentType ("text / html; charSet = utf-8");</p> <p>Request.SetCharacterencoding ("UTF-8");</p> <p>JSP</p> <p>-------------------------------------------------- -----------------------------</p> <p>Plus at JSP:</p> <p><% @ Page ContentType = "text / html; charset = GB2312"%></p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-100451.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="100451" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.057</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = '9x87N0BjqYn3cvLo5JmyghReIFkH5YRG2sxp4Qzm1P8MznYUhq3y_2B9QhSYhhwp32wcoNnnS9yPtmC_2F6ujxylkg_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>