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