我从HTML页面中将一个字符串输入到Java HTTPServlet中。根据我的要求,我得到了显示汉字的ASCII码:
“可以告诉我” (无空格)
如何将该字符串转换为Unicode?
HTML代码:
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <title>Find information</title> <link rel="stylesheet" type="text/css" href="layout.css"> </head> <body> <form id="lookupform" name="lookupform" action="LookupServlet" method="post" accept-charset="UTF-8"> <table id="lookuptable" align="center"> <tr> <label>Question:</label> <td><textarea cols="30" rows="2" name="lookupstring" id="lookupstring"></textarea></td> </tr> </table> <input type="submit" name="Look up" id="lookup" value="Look up"/> </form>
Java代码:
request.setCharacterEncoding("UTF-8"); javax.servlet.http.HttpSession session = request.getSession(); LoginResult lr = (LoginResult) session.getAttribute("loginResult"); String[] question = request.getParameterValues("lookupstring");
如果我打印问题[0],则会得到以下值:“&#21487;&#20197;&#21578;&#35785;&#25105;”
没有ASCII显示中文字符的代码。ASCII不代表汉字。
ASCII
如果您已经有一个Java字符串,则它已经具有所有字符(美国,拉丁语,中文)的内部表示形式。然后,您可以使用UTF-8或UTF-16表示形式将该Java字符串 编码 为Unicode :
String s =“可以告诉我”; ( 编辑 : 在没有汉字字体的系统上该行无法正确显示 )
String s = "\u53ef\u4ee5\u544a\u8bc9\u6211"; byte utfString = s.getBytes("UTF-8");
现在,我查看了您的更新问题,您可能正在寻找StringEscapeUtils类。它来自Apache Commons Text。并且会将您的HTML实体 取消转义 为Java字符串:
String s = StringEscapeUtils.unescapeHtml("& #21487;& #20197;& #21578;& #35785;& #25105;"); // without spaces