ОсновноеRadiotalkПользовательское
Программирование
6   •   Посмотреть все темы

Проблемма с кодировкой текста.

 

10
AL1M @AL1M
Всем привет !

Помогите мне исправить файл, чтобы отзывы которые подгружает файл с сервиса digiseller, отображались на русском языке в кодировке windows-1251.

Необходимый файл в архиве.

Отредактировано AL1M - 28.02.2012
10
AL1M @AL1M
Народ, неужели мне никто не поможет, дело то мелочное для многих, я просто не являюсь программистом, был бы этот код в html, дело другое поставил бы наверху <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">, но тут php + xml запрос.

Пожалуйста помогите мне, в этой мелочное ситуации (для вас).

284
arteshuk @arteshuk
Открываешь файл, ищешь

$answer=_GetAnswer("http://shop.digiseller.ru/xml/personal_responses.asp", $xml);

после этой строки вставляешь

$answer = iconv('utf-8', 'windows-1251', $answer);

только глянь в какой кодировке приходит ответ, и при необходимости замени utf-8 на ту кодировку, в которой отвечает сервер

284
arteshuk @arteshuk
пардоньте, не так надо 😀

**********

вот, вот так:

foreach ($xmlres->rows->row as $row)
{
$tmp++;
echo "<div style='font-family:Verdana; font-size: 11px; color: black; border-top-color: rgb(161, 184, 52); border-left-color: rgb(161, 184, 52); border-right-color: rgb(161, 184, 52); border-top-width: 1px; border-left-width: 1px; border-top-style: solid; border-left-style: solid; border-right-style: solid; border-bottom-color: currentColor; border-bottom-width: 0px; border-bottom-style: none; padding-top: 5px; padding-right: 0px; padding-bottom: 5px; padding-left: 0px; border-right-width: 1px; width:84%;'>";
echo "<b><span style='color:#A1B834'>&nbsp;#$tmp</span> <span style='color:#A1B834'>|</span></b> ";
echo "$row->date_response <span style='color:#A1B834'>|</span> ";
echo $w1251 = iconv('utf-8', 'windows-1251', $row->text_response).'<br>';
echo "</div>";
}

10
AL1M @AL1M
arteshuk, спасибо вам большое за помощь, текст теперь выводиться в кодировке windows-1251.

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

284
arteshuk @arteshuk
тут надо подумать, как определить кодировку браузера.....сейчас попробую, но ничего не обещаю )

284
arteshuk @arteshuk
ну в общем так: от кодировки браузера тут мало что зависит..

если страничка, на которую парсим в кодировке 1251, то делаем замену, которую я написал выше.

Если в utf-8, то нормально должен работать тот вариант, что в корневом посте....

либо я просто чего-то недопонял...

10
AL1M @AL1M
Возможно не так поняли!

Мне бы хотелось, чтобы от кодировки браузера - скрипт выводил ему текст, в той же кодировке, автоматически.

Дело в том что, хоть и большинство и пользуются кодировкой cp1251, но всё же есть смельчаки которые которые упорно настраивают браузер именно для UTF-8.

284
arteshuk @arteshuk
AL1M пишет:

Возможно не так поняли!
Мне бы хотелось, чтобы от кодировки браузера - скрипт выводил ему текст, в той же кодировке, автоматически.

Дело в том что, хоть и большинство и пользуются кодировкой cp1251, но всё же есть смельчаки которые которые упорно настраивают браузер именно для UTF-8.

что-то не так в королевстве 😀 у думаю, что у большинства стоит определять кодировку автоматом и все....

смысл в том, что неверные вывод именно из этого скрипта связан с тем, что страница, которую формирует сервер отдается в 1251, и то в какой кодировке воспроизводить страницу вы указываете в <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

а скрипт отдавал в утф, именно по этому мы и видели не то что надо....

но если у человека страница <meta http-equiv="Content-Type" content="text/html; charset=утф-8"> то первый вариант скрипта должен работать корректно...

10
AL1M @AL1M
но если у человека страница <meta http-equiv="Content-Type" content="text/html; charset=утф-8"> то первый вариант скрипта должен работать корректно...

В том то и вся проблема, у некоторых UTF8 стоит в браузере, у многих других windows-1251 как и пологается.

В принцыпе вы мне помогли и так, изначальная цель вывода текста в кодировке windows-1251 - достигнута.
Ещё раз - большое вам спасибо, благодарю 😀 .

3173
Николай @grom
Немного продолжу тему, но со своим глюком. На локалке скриптец делал. В базе данные хранятся в cp_1251_general_ci на странице кодировка прописана как windows-1251.
Закинул на хостинг базу. Простейшим способом sql запросом прям из phpmyadmin как: INSERT INTO `tab`(`r1`, `r2`, `r3`, `r4`) VALUES ('r1', 'r2', 'r3', 'r4'); ......
Аналогично в базе на хостинге кодировка cp_1251_general_ci, и на страничке windows-1251. Почему знаками вопроса русские символы отображаются? Неправильную кодировку подобрал?

2970
удалён @Foggy
grom, прописано в meta? Если да, возможно, сам файл другой кодировки. Например, в редакторе Notepad++ есть удобное редактирование кодировки файла(нужно указать ANSI). Если кодировка файла указана, но не указаны meta, соответственно, укажи их.
Показать текст

Отредактировано Foggy - 21.02.2012
3173
Николай @grom
Foggy пишет:

grom, прописано в meta? Если да, возможно, сам файл другой кодировки. Например, в редакторе Notepad++ есть удобное редактирование кодировки файла(нужно указать ANSI). Если кодировка файла указана, но не указаны meta, соответственно, укажи их.
Показать текст

Какой именно файл? Тот который отображает в нем в хедер: <meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
Имеешь ввиду все равно его пропустить через nod pad++? С работы приду , попробую. Что-то похожее в голове вертится, для чего - то делал уже.

3173
Николай @grom
Вообще подумал, зачем же все таки utf-8 делать? у меня база сама не в utf же?