Problems with UTF-8 encoding, JSP, jQuery, Spring

后端 未结 2 1586
死守一世寂寞
死守一世寂寞 2021-02-10 04:27

I have a web app with spring,jsp and jquery in a apache tomcat 6, one jsp page has a form that send the data with a ajax call made whit jquery, to a Spring MultiActionController

2条回答
  •  北荒
    北荒 (楼主)
    2021-02-10 05:11

    Everything looks fine until the point that you get the parameter in a variable. It's just your backend which still needs to be configured to use UTF-8. For example, the System.out.println() or the logger where you're sending the retrieved parameter to should also use UTF-8. Or the database where you're storing the retrieved parameter should also use UTF-8. Or the JDBC driver which is interacting with that DB. Or the text file where you're writing the data to. Etcetera.

    See also:

    • Unicode - How to get the characters right?

    Unrelated to your concrete problem, the line

    request.setCharacterEncoding("UTF-8");
    

    should be executed before Spring kicks in. It sets the POST request encoding and this will fail whenever Spring determines the request body before executing the action (note that this line has totally no effect on GET requests). Spring has a CharacterEncodingFilter which does exactly that. Register this in your web.xml:

    
        characterEncodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
        
            forceEncoding
            true
        
    
    
    
        characterEncodingFilter
        /*
    
    

提交回复
热议问题