我正在搜索 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 + "]*");
}
但是,未检测到 €
。当我调试代码时,€
在字符串中由 â�
表示。检测它的最简单方法是什么(最好不改变我的代码当前的工作方式)?
编辑 - 现有的 JSP 顶部有一个包含内容...
<%@ include file="/WEB-INF/commonElements/include.jsp" %>
并且该包含具有以下 UTF-8 编码行...
<%@ page language="java" pageEncoding="utf-8" contentType="text/html;charset=utf-8" %>
最佳答案
您需要使用String#matches
匹配完整的String
:
return input.matches(".*[" + CHARACTERS + "].*");
JSP 的 UTF-8 header :
<%@ 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");
%>
关于Java字符串匹配: € symbol is â¬,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16981193/