Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Прочитать текстовый файл (https://javascript.ru/forum/misc/21204-prochitat-tekstovyjj-fajjl.html)

kadabrik 02.09.2011 12:50

Цитата:

Сообщение от Kolyaj (Сообщение 124273)
Нельзя, в js придут знаки вопроса.

Точно помню, что именно таким способом перекодировал UTF-8 AJAX ответ в cp1251. Вот нашел где я это увидел:http://mabp.kiev.ua/2008/04/02/encod...in_javascript/

dmitriymar 02.09.2011 13:02

Цитата:

Сообщение от kadabrik
encodeURIComponent и decodeURIComponent

каким боком это? маны читай
Цитата:

Сообщение от kadabrik
http://mabp.kiev.ua/2008/04/02/encoding_decoding_utf_in_javascript/

прочитай там коменты под статьёй. Писавший её явно дуб.Не понимает разницу между кодировками и преобразованиями

kadabrik 02.09.2011 13:06

Цитата:

Сообщение от dmitriymar (Сообщение 124286)
каким боком это?

// UTF-8 encode / decode by Johan Sundstr?m
function encode_utf8( s )
{
  return unescape( encodeURIComponent( s ) );
}


function decode_utf8( s )
{
  return decodeURIComponent( escape( s ) );
}


Ну работает правда только в одну сторону, так как это не совсем перекодировка а преобразование, там в коментах можно увидеть.

dmitriymar 02.09.2011 13:11

ещё раз -прочитай коменты под статьей. то что ты делаешь не переводит из кодировки в кодировку,а заменяет символы ,какие нельзя передавать прямо , соответствующими им кодами.
а перекодировка из тогоже 1251 в утф8 сводится к перекодировке на серверной стороне тем же iconv и в последующей замене "непередаваемых " символов их кодами
Ты разницу понимаешь между перекодировкой и преобразованием?

kadabrik 02.09.2011 13:19

Цитата:

Сообщение от dmitriymar (Сообщение 124291)
ещё раз -прочитай коменты под статьей. то что ты делаешь не переводит из кодировки в кодировку,а заменяет символы ,какие нельзя передавать прямо , соответствующими им кодами.
а перекодировка из тогоже 1251 в утф8 сводится к перекодировке на серверной стороне тем же iconv и в последующей замене "непередаваемых " символов их кодами

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

dmitriymar 02.09.2011 13:21

Ещё раз :-/
какое это имеет отношение к перекодированию из утф8 в 1251 или любой другой пары кодировок?

Цитата:

Сообщение от kadabrik
Я читал комменты, и прекрасно понимаю что делают эти функции. Да если капнуть глубже то можно увидить что это не перекодировка, я просто обозначил это таким образом для простоты, не надо придираться, однако нужный эффект они дают - текст который не отображается нормально в UTF-8 после такого преобразования отображается корректно.

Да не понимаешь ты.....Эффект функции сводится к обратному преобразованию предварительно преобразованных данных .ключевые слова-предварительно преобразованных и обратному.Но это не имеет никакого отношения к изменению кодировки.Весь фокус в том чтоб предать с сервера данные в правильной кодировке чтоб их можно было открыть на сайте с указанной кодировкой.

popov654 03.09.2011 01:51

А что мешает реализовать на JS функцию, которая будет делать именно перекодировку?.. В самом деле, берём и перекодируем, надо только знать кодовую страницу и забить её в скрипт ручками

Kolyaj 03.09.2011 07:49

Цитата:

Сообщение от popov654
А что мешает реализовать на JS функцию, которая будет делать именно перекодировку?

В JavaScript уже приходит раскодированная строка, а не байты, раскодировкой занимается браузер. Если браузер не угадал кодировку, в JavaScript придут знаки вопроса.

Sergey_New 03.09.2011 12:52

Резюме:
чтение кириллицы из текстового файла на сервере в кодировке windows-1251 средсвами только Js браузером IE невозможно (исключение - iframe).
Так?

kadabrik 03.09.2011 15:20

Цитата:

Сообщение от dmitriymar (Сообщение 124295)
Ещё раз :-/
какое это имеет отношение к перекодированию из утф8 в 1251 или любой другой пары кодировок?
Да не понимаешь ты.....Эффект функции сводится к обратному преобразованию предварительно преобразованных данных .ключевые слова-предварительно преобразованных и обратному.Но это не имеет никакого отношения к изменению кодировки.Весь фокус в том чтоб предать с сервера данные в правильной кодировке чтоб их можно было открыть на сайте с указанной кодировкой.

Откопал проект где я это делал, действительно текст приходил не в чистом виде, т.к. php'шный json_encode его предварительно преобразовал. Каюсь:agree:


Часовой пояс GMT +3, время: 03:26.