Java 将包含ASCII的字符串转换为Unicode

Java 将包含ASCII的字符串转换为Unicode,java,unicode,utf-8,servlets,Java,Unicode,Utf 8,Servlets,我从HTML页面中获取一个字符串,并将其放入Java HTTPServlet中。 根据我的要求,我获得了显示中文字符的ASCII码: “可;以;告;&35785;我;”(不含空格) 如何将此字符串转换为Unicode HTML代码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

我从HTML页面中获取一个字符串,并将其放入Java HTTPServlet中。 根据我的要求,我获得了显示中文字符的ASCII码:

“可;以;告;&35785;我;”(不含空格)

如何将此字符串转换为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>
如果打印问题[0],则得到以下值:
“可;以;告;&35785;我;”

Java字符串包含unicode字符。解码是在构造字符串时进行的。

Java字符串包含unicode字符。解码是在构造字符串时进行的。

没有显示汉字的
ASCII
代码。ASCII不代表中文字符

如果您已经有了一个Java字符串,那么它已经有了所有字符(US、拉丁语、中文)的内部表示形式。然后,您可以使用或表示法将该Java字符串编码为Unicode:

字符串s=”可以告诉我"; (编辑:在没有汉字字体的系统上,此行无法正确显示)

现在我看一下您更新的问题,您可能正在查找该类。它来自Apache Commons文本。并且将unescape您的HTML实体转换为Java字符串:

String s = StringEscapeUtils.unescapeHtml("& #21487;& #20197;& #21578;& #35785;& #25105;"); // without spaces

没有显示汉字的
ASCII
代码。ASCII不代表汉字

如果您已经有一个Java字符串,那么它已经有了所有字符(美国、拉丁语、中文)的内部表示形式。然后,您可以使用或表示形式将该Java字符串编码为Unicode:

字符串s=”可以告诉我“;(编辑:在没有汉字字体的系统上,此行无法正确显示)

现在我看一下您更新的问题,您可能正在查找该类。它来自Apache Commons文本。并且将unescape您的HTML实体转换为Java字符串:

String s = StringEscapeUtils.unescapeHtml("& #21487;& #20197;& #21578;& #35785;& #25105;"); // without spaces

但显示的字符串如下所示:可;以& #21578;& #35785;& #25105;@罗布:那可能是你的页面或响应编码。向我们展示用于将该页“打印”到HTTP响应中的代码,以及用于该页和响应的编码。永远不要在.java源文件中放入非转义非ASCII字符。Java规范没有指定编码,因此经验证明,当混合操作系统、IDE、批处理/shell脚本等时,您会遇到问题。此外,在我的系统上(Chrome在Debian Linux上),您的答案中的汉字都显示为“空矩形”因为我的系统没有安装任何中文字体.Nu,但显示的字符串如下所示:可;以;告;&35785;我;@Rob:这可能是您的页面或响应编码。显示您用于打印的代码“将该页放入HTTP响应,以及用于该页和响应的编码。永远不要将非转义非ASCII字符放入.java源文件中。”。Java规范没有指定编码,因此经验证明,当混合操作系统、IDE、批处理/shell脚本等时,您会遇到问题。此外,在我的系统上(Chrome在Debian Linux上),您的答案中的汉字都显示为“空矩形”因为我的系统没有安装任何中文字体。
String s = StringEscapeUtils.unescapeHtml("& #21487;& #20197;& #21578;& #35785;& #25105;"); // without spaces