如何在JSP中将智能引号转换为纯文本

如何在JSP中将智能引号转换为纯文本,jsp,encoding,character-encoding,special-characters,Jsp,Encoding,Character Encoding,Special Characters,我有一个场景,其中我从MS Word或outlook复制数据,并将其粘贴到JSP文本区域,然后尝试使用Spring和Hibernate将其预列表到Oracle数据库中。问题是下面的句子 这不是唯一的角色,我们还允许–而且–也 被替换为 它���这不是唯一的角色,我们也允许��� 还有 谁能告诉我如何将实际数据保存到表中 注意:如果我在文本区域中键入'and-,并将其保存,则不会出现任何问题。仅当我从word/outlook复制文本并将其粘贴到文本区域时,才会出现问题 我已经尝试将以下内容放入我的

我有一个场景,其中我从MS Word或outlook复制数据,并将其粘贴到JSP文本区域,然后尝试使用Spring和Hibernate将其预列表到Oracle数据库中。问题是下面的句子

这不是唯一的角色,我们还允许–而且–也

被替换为

它���这不是唯一的角色,我们也允许��� 还有

谁能告诉我如何将实际数据保存到表中

注意:如果我在文本区域中键入'and-,并将其保存,则不会出现任何问题。仅当我从word/outlook复制文本并将其粘贴到文本区域时,才会出现问题

我已经尝试将以下内容放入我的JSP中,但无论如何都帮不了我


回答:按照下面提到的步骤解决相同的问题

  • 保留以下部分

    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    
  • 上述所有因素的结合有助于解决这个问题。希望这篇文章能帮助一些流浪者面对同样的问题

    快乐编码

    <filter>
    
        <filter-name>encodingFilter/filter-name>
    
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter/filter-class>
    
        <init-param>
    
            <param-name>encoding/param-name>
    
            <param-value>UTF-8/param-value>
    
        </init-param>
    
        <init-param>
    
            <param-name>forceEncoding/param-name>
    
            <param-value>true/param-value>
    
        </init-param>
    
    </filter>
    
    <filter-mapping>
    
        <filter-name>encodingFilter/filter-name>
    
        <url-pattern>/*/url-pattern>
    
    </filter-mapping>
    
    public static void windows1252ToIso8859(StringBuilder sbOriginal)  {
          if (null==sbOriginal) {
             return;
          }
          for (int isb = 0; isb < sbOriginal.length(); isb++)  {
             int origCharAsInt = (int) sbOriginal.charAt(isb);
             switch (origCharAsInt) {
    
             case ((int)'\u2018'):  sbOriginal.setCharAt(isb, '\''); break;  // left single quote
             case ((int)'\u2019'):  sbOriginal.setCharAt(isb, '\''); break;  // right single quote
             case ((int)'\u201A'):  sbOriginal.setCharAt(isb, '\''); break;  // lower quotation mark
    
             case ((int)'\u201C'):  sbOriginal.setCharAt(isb, '"'); break;  // left double quote
             case ((int)'\u201D'):  sbOriginal.setCharAt(isb, '"'); break;  // right double quote
             case ((int)'\u201E'):  sbOriginal.setCharAt(isb, '"'); break;  // double low quotation mark
    
             case ((int)'\u2039'):  sbOriginal.setCharAt(isb, '\''); break;  // Single Left-Pointing Quotation Mark
             case ((int)'\u203A'):  sbOriginal.setCharAt(isb, '\''); break;  // Single right-Pointing Quotation Mark
    
             case ((int)'\u02DC'):  sbOriginal.setCharAt(isb, '~'); break;  // Small Tilde
    
             case ((int)'\u2013'):  sbOriginal.setCharAt(isb, '-'); break;  // En Dash
             case ((int)'\u2014'):  sbOriginal.setCharAt(isb, '-'); break;  // EM Dash
    
             default: break;
             }
          }
       }
    
       public static String windows1252ToIso8859(String strOriginal)  {
          if (null==strOriginal) {
             return null;
          }
          StringBuilder sbOrig = new StringBuilder(strOriginal);
          windows1252ToIso8859(sbOrig);
          return sbOrig.toString();
       }
    
    public String getIncidentShrtDescC() {
        return this.incidentShrtDescC;
    }
    
    public void setIncidentShrtDescC(String incidentShrtDescC) {
        this.incidentShrtDescC = AppGlobalUtil.windows1252ToIso8859(incidentShrtDescC);
    }