Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.07.2018, 17:22
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Приходит файл с кракозябрами.
Здравствуйте. Я уже совсем запутался. Помогите, пожалуйста.
Сделал запрос AJAX и файл вроде бы приходит, но все русские буквы показывает ромбиками. Все уже перепробовал - ничего не помогает.
Что нужно сделать, что бы русские буквы показывались нормально?
http://duke6948.ucoz.net/
Кнопка слева: "СТАТЬИ" -> "Принять текстовый файл".
Ответить с цитированием
  #2 (permalink)  
Старый 04.07.2018, 18:03
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Соблюдать кодировку - Ajax работает в UTF, ваша же страница в CP1251. Кстати во что там приходит если вообще ничего не видно?
Ответить с цитированием
  #3 (permalink)  
Старый 04.07.2018, 18:07
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Приходит в средний <div id="Center">. Так, простите меня, а что сделать-то нужно, чтобы нормально все(по-русски) отображалось?
Ответить с цитированием
  #4 (permalink)  
Старый 04.07.2018, 18:13
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

изменить <meta charset="CP1251"> на <meta charset="UTF-8">
Ответить с цитированием
  #5 (permalink)  
Старый 04.07.2018, 18:19
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Сообщение от j0hnik Посмотреть сообщение
изменить <meta charset="CP1251"> на <meta charset="UTF-8">
- Не помогает что-то. Предлагайте еще, пожалуйста, свои варианты.
Ответить с цитированием
  #6 (permalink)  
Старый 04.07.2018, 18:35
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,815

Сообщение от Strongman
Не помогает что-то
Помогло же.
У вас перед строкой с кодировкой страницы что-то невнятное используется.
Ответить с цитированием
  #7 (permalink)  
Старый 04.07.2018, 23:08
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Сообщение от Strongman
Не помогает что-то
Естественно, не поможет. Весь сайт должен работать в единой кодировке. Страницы должны сохраняться в редакторе также в этой кодировке, и в случае UTF обязательно без ВОМ. При запросах к базе указываться кодировка соединения, а Apache, если определяет кодировку по умолчанию, то также соответствовать.

Либо, работая в Windows-1251 (это и есть CP1251), кодировать в UTF/декодировать в 1251 при передаче/приеме данных Ajax запроса.
Ответить с цитированием
  #8 (permalink)  
Старый 05.07.2018, 09:24
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Сообщение от laimas Посмотреть сообщение
Весь сайт должен работать в единой кодировке. Страницы должны сохраняться в редакторе также в этой кодировке, и в случае UTF обязательно без ВОМ. При запросах к базе указываться кодировка соединения, а Apache, если определяет кодировку по умолчанию, то также соответствовать.
- Попробовал сохранить файл в UTF-8 хоть без BOM, хоть с BOM - ничего не помогает. Все равно ромбики одни.

Сообщение от laimas Посмотреть сообщение
Либо, работая в Windows-1251 (это и есть CP1251), кодировать в UTF/декодировать в 1251 при передаче/приеме данных Ajax запроса.
- Вот это вот интересная идея, но я не понял как реализовать? Варианты:
1) Когда отправляется XMLHTTP-запрос на сервер я навтыкал туда setRequestHeader() - 2 штуки между функциями open и send:
Request.open('GET', URL, true); 
 Request.setRequestHeader("Content-type", "text/plain");
 Request.setRequestHeader("Charset", "UTF-8");
 Request.send('');

Что-то не так?

2) Как-то там были примеры с функциями encodeURIComponent() и decodeURIComponent(). Laimas, их как-то использовать что-ли?
Ответить с цитированием
  #9 (permalink)  
Старый 05.07.2018, 09:39
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

Request.setRequestHeader("Charset", "UTF-8"); - передача заголовка, в данном случае кодировка, ничего не кодирует, она сообщает адресату в какой кодировке передаются данные.

encodeURIComponent() и decodeURIComponent() - это функции для кодирования управляющих последовательностей в URL и к преобразования кодировок отношения не имеют - https://developer.mozilla.org/ru/doc...deURIComponent

Сообщение от Strongman
Попробовал сохранить файл в UTF-8 хоть без BOM
Разберитесь со своими файлами на сервере, переделав все на UTF, ибо проблемы будут не только с кодировками при Ajax, но и с JSON, если будет использоваться.
Ответить с цитированием
  #10 (permalink)  
Старый 05.07.2018, 17:52
Кандидат Javascript-наук
Отправить личное сообщение для Strongman Посмотреть профиль Найти все сообщения от Strongman
 
Регистрация: 22.03.2016
Сообщений: 132

Вроде HTML-файл нормально показывает.

Последний раз редактировалось Strongman, 05.07.2018 в 18:04.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как сохранить произвольный файл в веб-хранилище (localstorage)? ice99 Общие вопросы Javascript 2 05.01.2018 09:26
Как правильно сохранить загруженный файл? 2chan Node.JS 10 03.04.2016 23:11
Преобразование Base64 в файл в IndexedDb pakskiy Общие вопросы Javascript 4 15.04.2015 13:26
Не работает файл htacces kilogram Серверные языки и технологии 16 17.04.2012 20:57
Как можно достать файл из <input type="file"/> преобразовать файл в base 64 maxcab Events/DOM/Window 2 28.06.2011 22:52