我从HTML页面获取一个字符串到我的Java HTTPServlet中。 根据我的要求,我得到显示中文字符的ASCII码:
“可以告诉我” (没有空格)
如何将此字符串转换为Unicode? p>
HTML code:
<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],那么我得到这个值: “&amp;#21487;&amp;#20197;&amp;#21578;&amp;#35785;&amp;#25105;”
答案 0 :(得分:5)
没有显示中文字符的ASCII
代码。 ASCII不代表中文字符。
如果您已有Java字符串,则它已具有所有字符(US,LATIN,CHINESE)的内部表示形式。然后,您可以使用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。并且 unescape 将您的HTML实体转换为Java字符串:
String s = StringEscapeUtils.unescapeHtml("& #21487;& #20197;& #21578;& #35785;& #25105;"); // without spaces
答案 1 :(得分:0)
Java String包含unicode字符。在构造字符串时发生了解码。