Java字符串匹配:€符号是â

时间:2013-06-07 09:53:39

标签: java string string-matching

我正在搜索像这样的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" %>

2 个答案:

答案 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)

仅表示为一个字符。如果您对字符串进行编码,则根据编码,它可能显示为两个或三个字符。我

听起来你正在尝试扫描使用错误编码读取的字符串,因此它不会创建您开始使用的字符串。即什么应该是欧元,错误地显示为两个字符。