Java unicode decode

267
04 сентября 2018, 16:40
\u0421\u0430\u0439\u0434\u0438\u043d\u0433 Country Standart 3 \u043c \u0446\u0432\u0435\u0442 \u0441\u0432\u0435\u0442\u043b\u043e-\u0437\u0435\u043b\u0451\u043d…

как из этой строки получить строку, понятную простому человеку? Вот что у меня на данный момент есть, но оно не работает корретно(

public String unicodeDecode(String myString){
    String[] strs = myString.split(" ");
    String text = "";
    for (String str : strs) {
        if (str.contains("\\u") && !str.contains(".") && !str.contains(",") && !str.contains("-") && !str.contains("&")  && !str.contains(";") ) {
            str = str.replace("\\", "");
            String[] arr = str.split("u");
            for (int i = 1; i < arr.length; i++) {
                int hexVal = Integer.parseInt(arr[i], 16);
                text += (char) hexVal;
            }
            text += " ";
        }
        else {
            text += str + " ";
        }

    }
    return text;
}
Answer 1

Тут используется регулярка для поиска юникодных последовательностей, которые будут превращены в понятные буквы.

Проверьте:

String text = "\\u0421\\u0430\\u0439\\u0434\\u0438\\u043d\\u0433 Country Standart 3 \\u043c \\u0446\\u0432\\u0435\\u0442 \\u0441\\u0432\\u0435\\u0442\\u043b\\u043e-\\u0437\\u0435\\u043b\\u0451\\u043d&hellip;";
// Set нужен, чтобы исключить дубликаты
Set<String> hexItems = new HashSet<>();
Matcher m = Pattern.compile("\\\\u[a-fA-f0-9]{4}").matcher(text);
while (m.find()) {
    hexItems.add(m.group());
}
System.out.println(hexItems); // [\u0437, \u0439, \u0438, \u043c, \u043b, \u043e, \u043d, ...
// Перебор для замены
for (String unicodeHex : hexItems) {
    int hexVal = Integer.parseInt(unicodeHex.substring(2), 16);
    text = text.replace(unicodeHex, "" + ((char) hexVal));
}
System.out.println(text);  // Сайдинг Country Standart 3 м цвет светло-зелён&hellip;
Answer 2
String utf8Text = "\u0421\u0430\u0439\u0434\u0438\u043d\u0433 Country Standart 3 \u043c \u0446\u0432\u0435\u0442 \u0441\u0432\u0435\u0442\u043b\u043e-\u0437\u0435\u043b\u0451\u043d&hellip";
byte[] bytes = utf8Text.getBytes(StandardCharsets.UTF_8);
String text = new String(bytes, StandardCharsets.UTF_8);
READ ALSO
исключение java.lang.IndexOutOfBoundsException javafx

исключение java.lang.IndexOutOfBoundsException javafx

Я только начал знакомство из javafx и захотел сделать картинку которая будет ездить справа налево в отдельном потокеВот мой класс для отдельного...

228
Сделать фоновое изображение по центру и на весь экран

Сделать фоновое изображение по центру и на весь экран

Как сделать фоновое изображение по центру и на весь экран??? И чтобы контент был посередине, как у хедера? Сначала у меня получись это сделать,...

275
Появляется outline при наведении.

Появляется outline при наведении.

Появилась странная проблема -- в хэдере при наведении на объекты появляется белый outlineЯ нигде не писал outline, но и если написать *{ outline: none; }, то всё...

224