? ? ? ? 在开发的时候经常会碰到URL中请求参数含有中文的情况,这时如果在前台不作处理,直接在后台利用request.getParameter()拿对应的参数值就会出现中文乱码。

  ? ? ? ? 这时可以先利用jQuery对对应中文进行encodeURI(),例子如下:

  前台对应代码

  

  重发短信

  ? ? ? ? 后台对应代码

  ? String itemName=request.getParameter("itemName");

  ? ?try{

  ?itemName=java.net.URLDecoder.decode(itemName,"utf-8");

  }catch(UnsupportedEncodingException e){

  ?e.printStackTrace();

  ? ? ?}

  可以看到在前台itemName中文参数利用了encodeURI(encodeURI(itemName))进行编码,在后台利

  用?java.net.URLDecoder.decode(itemName,"utf-8")这进解码

  前台为什么要进行两次encodeURI,而后台只有一次decode呢?

  第一次编码的作用是将多字节字符转变成纯粹的 Ascii 字符串(这里把编第一次的结果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不带有多字节字符的)?再编一次后,提交,接收时容器自动解一次(容器自动解的这一次,不管是按

  GBK 还是 UTF-8 还是 ISO-8859-1 都好,都能够正确的得到 [STR_ENC1])然后,再在程序中实现一次Java中通常使用 java.net.URLDecoder(***, "UTF-8") 就可以得到想提交的参数的原值。

  ?