java - Encoding UTF-8 in HTTPServlet request -


this may like problem that's been solved it's not, because have gone through questions deal utf-8 , none of solutions has helped me.

i'm sending http request java servlet containing json object using json simple library.

  1. i added utf-8 encoding in tomcat xml file
  2. my html pages support utf-8 encoding
  3. both database , tables utf-8 encoded
  4. i changes default encoding of jvm utf-8 using system variables (yeah! that's how desperate got)

this dispatcher function:

    protected void dopost(httpservletrequest request,         httpservletresponse response) throws servletexception, ioexception {      request.setcharacterencoding("utf-8");      ajaxparser cr = ajaxparser.clientrequestfactory();     clientrequest msg = cr.parseclientajax(request);       handlerequest hr = new handlerequest();     handlerequeststatus hrs = hr.handlemessage(msg);      ajaxresponsegenerator arg = new ajaxresponsegenerator();     jsonobject jsonobj = arg.handleresponse(hrs);     response.setcharacterencoding("utf-8");     response.setcontenttype("application/json");     printwriter out = response.getwriter();     system.out.println(jsonobj);// write json object console     out.println(jsonobj);  } 

and how parsing string:

    public clientrequest parseclientajax(httpservletrequest request) {      clientrequest msg = new clientrequest();     stringbuffer jb = new stringbuffer();     string line = null;     try {         bufferedreader reader = request.getreader();         while ((line = reader.readline()) != null)             jb.append(line);     } catch (exception e) {          e.printstacktrace();     }      jsonparser parser = new jsonparser();     try {         jsonobject obj = (jsonobject) parser.parse(jb.tostring());          string opcodestring = (string) obj.get("opcode");         requestcodeenum numericenumcode = (requestcodeenum) opcodesmap                 .get(opcodestring);         msg.setopcode(numericenumcode);          string entitystr = obj.get("entity").tostring();          entity entity = makeentityfromstring(numericenumcode, entitystr);         msg.setentity(entity);      } catch (parseexception pe) {         system.out.println(pe);     }     return msg; } 

i tried debugging printing eclipse console (which changed utf-8 encoding) text send throughout application find out text not encoded correctly, found text in right encoding until right before execution of query. after check database manually , text inserted there question marks.

i tried manually insert non-english text database using workbench, , works fine, both in database , when displaying data in html afterwards. problem happens when insert data web page.

i'm stuck, have no idea problem might be.

any suggestions?

try this:

inputstream inputstream = request.getinputstream(); bufferedreader reader = new bufferedreader(new inputstreamreader(inputstream , standardcharsets.utf_8)); 

Comments

Popular posts from this blog

ruby on rails - RuntimeError: Circular dependency detected while autoloading constant - ActiveAdmin.register Role -

c++ - OpenMP unpredictable overhead -

javascript - Wordpress slider, not displayed 100% width -