код @Bohemian корректен, это работает для меня, ваша не-кодированной строки 1010.
Теперь я добавляю еще один ответ вместо комментирования ответа богемный, потому что есть две вещи, которые все еще должны быть упомянуты:
Я копировать-вставить вашу строку в HTML-код и браузер не может повторно или правильно, потому что ваша строка неправильно закодирована, т.е. е. строка кодирует высокий суррогат и низкий для двухбайтовых символов отдельно, а не кодирует всю кодовую точку (кажется, исходная строка - это кодированная строка UTF-16, возможно, строка Java?).
Вы хотите, чтобы строка была перекодирована в UTF-8.
После того, как вы ваш Струнный Unencoded на StringEscapeUtils.unescapeHtml(htmlStr)
(который не-кодирует строку успешно, несмотря на кодируются неправильно), это не имеет особого смысла говорить о «строковых кодировок», как Java строки «не знают» о кодировок. (они используют UTF-16 внутри, хотя).
Если вам нужна группа байтов, содержащих UTF-8 закодированный «строка», вы должны получить «сырые» байты из строки в кодировке UTF-8:
String javaStr = StringEscapeUtils.unescapeHtml(htmlStr);
byte[] rawUft8String = javaStr.getBytes("UTF-8");
И делать с такими байтовый массив, что вам нужно.
Теперь, если вам нужно написать строку с кодировкой UTF-8 в файл, вместо этого массива байтов вам нужно указать кодировку при создании правильного java.io.Writer
.
Попробуйте этот код не-кодировать строку (изменить путь к файлу первым), а затем откройте полученный файл в любом редакторе, который поддерживает UTF-8:
java.io.Writer подход (лучше):
public static void main(String[] args) throws IOException {
String str = "10����������������10������������������";
String javaString = StringEscapeUtils.unescapeHtml(str);
try(Writer output = new OutputStreamWriter(
new FileOutputStream("/path/to/testing.txt"), "UTF-8")) {
output.write(javaString);
}
}
java.io.OutputStream подход (если у вас уже есть "сырая" строка):
public static void main(String[] args) throws IOException {
String str = "10����������������10������������������";
String javaString = StringEscapeUtils.unescapeHtml(str);
try(OutputStream output = new FileOutputStream("/path/to/testing.txt")) {
for (byte b : javaString.getBytes(Charset.forName("UTF-8"))) {
output.write(b);
}
}
}
W шляпа, вы имеете в виду «не повезло»? Каков был результат? –
Те же самые точные символы были возвращены, ни один из специальных символов html не был отменен – user3084207
Возможно, вам придется свернуть собственный переводчик. Конкретная часть - это NumericEntityUnescaper в пакете Apache Commons. Существуют рецепты для создания собственного переводчика на своем сайте. –