Java字符串匹配: € symbol is â¬

标签 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 + "]*");
}

但是,未检测到 。当我调试代码时, 在字符串中由 â� 表示。检测它的最简单方法是什么(最好不改变我的代码当前的工作方式)?

编辑 - 现有的 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/

相关文章:

Java无法访问类,找不到类文件

java - DeleteOnExitHook 上的内存泄漏

java - C/Java 中的堆栈与堆

c++ - 如何从第二个字符开始传递一个字符串作为函数中的参数进行递归,并限制函数中的数据类型为字符串?

string -\n 和\r\n 有什么区别?

string - 算法——基于重复因子的字符串匹配

java - JPA2 : Case-insensitive like matching anywhere

ruby - 尝试分割字符串(ruby)

c++ - 使用带有小图案的 SSE4.2 指令 PCMPESTRM

java - 将字符串与文本进行匹配并存储下一个文本