Получите сообщение SOAP прежде, чем отправить его WebService в.NET

Это связано с кодировкой символов . Компьютеры занимаются только цифрами. Чтобы сохранить текст, символы в тексте должны быть преобразованы в номера и из них, используя некоторую схему. Эта схема называется кодировкой символов. Существует множество различных кодировок символов; некоторые из известных стандартных кодировок символов - ASCII, ISO-8859-1 и UTF-8.

В первом примере вы читаете все байты (числа) в файле, а затем преобразуете их в символов, передав их конструктору класса String. Это будет использовать кодировку по умолчанию вашей системы (независимо от ее операционной системы) для преобразования байтов в символы.

Во втором примере, где вы используете Files.lines(...), символ UTF-8 кодирование будет использоваться, согласно документации . Когда в файле, который не является допустимой последовательностью UTF-8, будет найдена последовательность байтов, вы получите MalformedInputException.

Кодировка символов по умолчанию вашей системы может быть или не быть UTF- 8, так что это может объяснить разницу в поведении.

Вам нужно будет выяснить, какая кодировка символов используется для файла, а затем явно использовать это. Например:

String content = new String(Files.readAllBytes(Paths.get("_template.txt")),
        StandardCharsets.ISO_8859_1);

Второй пример:

Stream lines = Files.lines(Paths.get("_template.txt"),
        StandardCharsets.ISO_8859_1);

16
задан Kev 20 January 2009 в 15:54
поделиться

1 ответ

7
ответ дан 30 November 2019 в 21:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: