我正在搜索像这样的Java字符串中某些字符的存在......
// LineBreak ^ { } \ [ ~ ] | €
private static final String CHARACTERS = "\u000c\u005e\u007b\u007d\\\u005c\\\u005B\u007e\\\u005D\u007c\u20ac";
public static boolean doesCharacterExist(String input) {
return input.matches('[' + CHARACTERS + "]*");
}
但是,未检测到€
。当我通过代码调试时,€
在字符串中由â¬
表示。检测它的最简单方法是什么(最好不要改变我的代码目前的工作方式)?
编辑 - exisitng JSP在其顶部有一个包含...
<%@ include file="/WEB-INF/commonElements/include.jsp" %>
并且include包含以下UTF-8编码行...
<%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8" %>
答案 0 :(得分:1)
您需要使用String
匹配完整的String#matches
:
return input.matches(".*[" + CHARACTERS + "].*");
JSP的UTF-8标头:
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
System.out.println("Character encoding : "+request.getCharacterEncoding());
System.out.println("Character encoding : "+response.getCharacterEncoding());
response.setCharacterEncoding("UTF-8");
%>
答案 1 :(得分:0)
€
仅表示为一个字符。如果您对字符串进行编码,则根据编码,它可能显示为两个或三个字符。我