Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Как заставить JS нормально работать с кодировкой?

Как заставить JS нормально работать с кодировкой?


     29.11.2022    javascript    Все вопросы » jQuery    203

вопрос
Здравствуйте.

в общем есть два PHP-файла:

Первый - шаблон (заполняет шаблон новости и сохраняет в файл для последующего постинга программой)

Второй (подключаемый) - ищет в папке "Архив" одноимённые фалы, генерирует из найденого кликабельный список файлов и одтаёт при запросе.

"Чёрт меня дёрнул" - решил прикрутить javascript, чтоб PHP c перезагрузками не городить:

Сделал кнопку, при нажатии на которую, скрипт отправляет запрос на "вторую" PHP-страницу - та генерирует ответ - дальше скрипт вставляет сей ответ в "div" по айдишнику "otvet" на "первой" PHP-странице.

Код скрипта:
<script>
async function getResponse2(){
var nazvanie = await fetch("searchfiles2.php?url="+document.getElementById("input-name").value);
var otvet = await nazvanie.text();
document.getElementById("otvet").innerHTML = otvet;
}
</script>


getResponse2 вызвается нажатием кнопки (на картинке она с тремя вопросиками)

Вот в чём беда:
На обоих PHP-страницах прописано:
header('Content-Type: text/html; charset=windows-1251');

и
<meta content="text/html; charset=windows-1251";>

PHP файлы сами В ANSI кодировке - сами файлы работают отлично (предвосхищая советы по переводу PHP-файлов в UTF-8 сообщу - начисто перестаёт работать поиск файлов, если в пути файла (в том числе и имени) есть русская буква)

Ответ приходит в правильной кодировке:
Как заставить JS нормально работать с кодировкой?


Но вот функция .text() превращает все русские буквы в кракозабры.

Подскажите пожалуйста, господа, как эту "гадину" победить - как заставить её буквы мои не менять по своему усмотрению? Возможно данной функции нужно передать какой-то параметр? - Поиски в гугале результатов не дают (по джаве вообще крайне трудно найти ответы на вставшие вопросы...)

P.S. Чем больше узнаю javascript - тем больше люблю PHP!...

Ответа пока нет


3 комментария

dj-avtosh
PHP-developer

dj-avtosh - 29 ноября 2022 18:36 -

в какой кодировке сайт и что в консоли браузера показывает в заголовках скрипта? какую кодировку?

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

NONSENS
Юзер

NONSENS - 30 ноября 2022 14:52 -

dj-avtosh,

windows-1251

Это не сайт - это пару PHP-страниц (вторая подключаемая без интерфейса - просто отрабатывает при вызове, отдавая ответ в виде HTML-кода)

Обоим страницам присвоены заголовки с windows-1251

Запрос java скрипт отправляет в правильной кодировке (иначе бы не выполнился второй файл), ответ приходит в правильной кодировке (правый нижний угол картинки).

Ломает кодировку строка var otvet = await nazvanie.text(); (а точнее функция/метод .text). Видимо туда нужно передать параметр, но как не понятно.

Функция .text() поумолчанию переделывает кодировку - требуется её "отучить" это делать.

Пока решил так:
async function getResponse2() {
	const textDecoder = new TextDecoder('windows-1251');
	const response = await fetch('searchfiles2.php?url=' + document.getElementById('input-name').value);
	const buffer = await response.arrayBuffer();
	const text = textDecoder.decode(buffer);

	document.getElementById('otvet').innerHTML = text;
}

dj-avtosh
PHP-developer

dj-avtosh - 30 ноября 2022 15:46 -

Покажите ответ php скрипта в консоли Response headers - Тогда продолжим беседу

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

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

 07.02.2014 Бахтияр_Османов  jQuery
наверх