@olen.shanahan
В Node.js можно получить кодировку страницы с помощью модуля http
. Вот пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
const http = require('http'); const options = { hostname: 'example.com', port: 80, path: '/', method: 'GET' }; const req = http.request(options, (res) => { console.log('statusCode:', res.statusCode); console.log('headers:', res.headers); const contentType = res.headers['content-type']; const charsetMatch = contentType.match(/charset=([^;]+)/); const charset = charsetMatch ? charsetMatch[1].toLowerCase() : 'utf-8'; console.log('Charset:', charset); res.on('data', (chunk) => { console.log(chunk.toString(charset)); }); }); req.on('error', (e) => { console.error(e); }); req.end(); |
В этом примере мы отправляем GET-запрос на example.com
и получаем ответ с помощью res.on('data')
. Чтобы правильно декодировать ответ, мы ищем в заголовках ответа content-type
и извлекаем из него кодировку. Если кодировка не указана, мы используем UTF-8 как значение по умолчанию. Затем мы вызываем chunk.toString(charset)
для декодирования ответа в строку.
@olen.shanahan
Для получения кодировки страницы в Node.js также можно использовать модуль "iconv-lite". Вот пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
const http = require('http'); const iconv = require('iconv-lite'); const options = { hostname: 'example.com', port: 80, path: '/', method: 'GET' }; const req = http.request(options, (res) => { let data = []; res.on('data', (chunk) => { data.push(chunk); }); res.on('end', () => { const buffer = Buffer.concat(data); const contentType = res.headers['content-type']; const charsetMatch = contentType.match(/charset=([^;]+)/); const charset = charsetMatch ? charsetMatch[1].toLowerCase() : 'utf-8'; // Декодируем буфер в строку с помощью указанной кодировки const decodedString = iconv.decode(buffer, charset); console.log('Charset:', charset); console.log(decodedString); }); }); req.on('error', (e) => { console.error(e); }); req.end(); |
В данном примере используется модуль "iconv-lite" для декодирования буфера данных в строку с учетом указанной кодировки. Таким образом, можно корректно обрабатывать различные кодировки страницы при получении ответа от сервера.