Преобразовать строку, содержащую ASCII, в Юникод - PullRequest
1 голос
/ 24 декабря 2010

Я получаю строку со своей HTML-страницы в мой Java HTTPServlet.По моей просьбе я получаю ASCII-коды с китайскими символами:

"& # 21487; & # 20197; & # 21578; & # 35785; & # 25105;"(без пробелов)

Как преобразовать эту строку в 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;"

Ответы [ 2 ]

5 голосов
/ 24 декабря 2010

Не существует такой вещи, как ASCII коды, которые отображают китайские иероглифы.ASCII не представляет китайские символы.

Если у вас уже есть строка Java, она уже имеет внутреннее представление всех символов (US, LATIN, CHINESE).Затем можно кодировать эту строку Java в Unicode, используя UTF-8 или UTF-16 представления:

String s = "可以 告诉 我 "; ( РЕДАКТИРОВАТЬ : Эта строка не будет отображаться корректно в системах без шрифтов для китайских символов )

String s = "\u53ef\u4ee5\u544a\u8bc9\u6211";
byte utfString = s.getBytes("UTF-8");

Я смотрю на ваш обновленный вопрос, возможно, вы ищете класс StringEscapeUtils .Это из текста Apache Commons.И unescape ваши HTML объекты в строку Java:

String s = StringEscapeUtils.unescapeHtml("& #21487;& #20197;& #21578;& #35785;& #25105;"); // without spaces
0 голосов
/ 24 декабря 2010

Строка Java содержит символы Юникода. Декодирование имело место, когда строка была построена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...