1

Тема: проблеми з кирилицею

Написав сервлет, працює гуд та виникло питання з кодуванням....
Мені приходить xml наприклад:

<?xml version="1.0" encoding="UTF-8"?><name>Ostap</name><surname>Пупкін</surname>
роблю:
protected void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String requestXml = getRequestXml(request.getInputStream(),request.getContentLength());
}

public static String getRequestXml(ServletInputStream servletInputStream, int contentLength) throws IOException {
        BufferedInputStream bs = new BufferedInputStream(servletInputStream);

        int formDataLength = contentLength;
        byte dataBytes[] = new byte[formDataLength];
        int byteRead = 0;
        int totalBytesRead = 0;
        while (totalBytesRead < formDataLength) {
            byteRead = bs.read(dataBytes, totalBytesRead, formDataLength);
            totalBytesRead += byteRead;
        }

System.out.println(new String(dataBytes,"UTF-8"));    
    
        return new String(dataBytes,"UTF-8");
                }

і працюю далі але в SystemOut     O

<?xml version="1.0" encoding="UTF-8"?><name>Ostap</name><surname>&#1055;&#1091;&#1087;&#1082;&#1110;&#1085;</surname>

як, не використовуючи .replaceAll("&#1055;", "П").... з цим поборотись?

0xDADA11C7: Використовуйте теґ code

2

Re: проблеми з кирилицею

глянгьте на це:

import static org.apache.commons.lang.StringEscapeUtils.escapeHtml;
Подякували: Petsk-off1

3

Re: проблеми з кирилицею

Дякую!)))
використав:
import static org.apache.commons.lang.StringEscapeUtils.unescapeHtml;
бо org.apache.commons.lang.StringEscapeUtils.escapeHtml; навпаки все перекинуло в htmlкод.)))

public static String getRequestXml(ServletInputStream servletInputStream, int contentLength) throws IOException {
        BufferedInputStream bs = new BufferedInputStream(servletInputStream);

        int formDataLength = contentLength;
        byte dataBytes[] = new byte[formDataLength];
        int byteRead = 0;
        int totalBytesRead = 0;
        while (totalBytesRead < formDataLength) {
            byteRead = bs.read(dataBytes, totalBytesRead, formDataLength);
            totalBytesRead += byteRead;
        }
        String result = unescapeHtml(new String(dataBytes,"UTF-8"));
System.out.println("result:"+ result );
        return result;

    }

в SystemOut  result:<?xml version="1.0" encoding="UTF-8"?><name>Ostap</name><surname>Пупкін</surname>

Подякували: 0xDADA11C71