Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Смена кодировки строки в PHP, ........................................ 
:(
    Опции темы
Гость_Shaman
Дата 7.8.2003, 08:07 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Прошу прощения за ламерский вопрос smile.gif
В переменной хранится строка в кодировке cp-866, мне нужно изменить кодировку этой строки на koi8-r.
как это сделать средствами PHP (без использования внешних приложений и подобной фигни smile.gif)? Заранее спасибо за ответ smile.gif
  Вверх
rMaveric
Дата 7.8.2003, 09:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 375
Регистрация: 18.7.2003

Репутация: 3
Всего: 6



convert_cyr_string(твоя строка, исходная кодировка, требуемая кодировка)

cp-866 = a

koi8-r = k

win = w

Ну а больше надо редко разве маковская ее код m

Все. Надеюсь поможет


--------------------
Моя благодарность не будет иметь границ. в определенных рамках конечно ;)
---
Веду IT блог
PM MAIL WWW ICQ   Вверх
Гость_Shaman
Дата 7.8.2003, 11:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Этот способ я знаю и пробовал, не получается smile.gif
есть ли другие? smile.gif
  Вверх
Cepera
Дата 7.8.2003, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



а почему собственно не получается?


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
MuToGeN
Дата 7.8.2003, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 7
Всего: 32



http://php.net/iconv - другой способ, только требует iconv библиотеку.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
Гость_Shaman
Дата 8.8.2003, 07:18 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











есть строка в кодировке cp866 (скрипт - nntp newsgate), ее нужно отобразить в koi8-r (сервак-то юниксовый smile.gif). И никакие конверт_кир_стринги не помогают, хотя я их в скрипт штук 10 в разных местах уже понапихал smile.gif То есть по идее проблем быть не должно, а они есть...
  Вверх
Cepera
Дата 8.8.2003, 07:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



имхо дело не в пхп ,-)
попробуй создать файл .htaccess
Код
AddDefaultCharset koi8-r



--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Cepera
Дата 8.8.2003, 07:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



сервак сам должен конвернуть в КОИ8-Р


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Гость_Shaman
Дата 8.8.2003, 07:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Руки бы оторвать тому, кто сервак конфигурировал smile.gif
Не в первый раз уже сталкиваюсь с подобной проблемой smile.gif
  Вверх
Smoker
Дата 8.8.2003, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.8.2003

Репутация: нет
Всего: нет



Я таки зарегился, форум хорош smile.gif
Ну так вот: не думаю, что это все-таки проблема сервера, так как у меня стоит локальный апач для отладки, настройки там нормальные, какие надо (и адддефолтчарсет тоже стоит smile.gif). И тем не менее проблема повторяется. Сил моих больше нету с кодировками бороться, неужели у всех такие траблыconfused.gif?

По поводу айконвэ-библиотеки, есть ли способ использовать ее функции без подключения к пхп (инклуд там какой-нибудь, или еще что...)?

PS Ух, как я не люблю PHP smile.gif
PM MAIL   Вверх
Cepera
Дата 8.8.2003, 08:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



давай по порядку...
1. плиз, кусок кода с хидерами
2. показ хидеров кидаемых сервером клиенту


--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Smoker
Дата 8.8.2003, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.8.2003

Репутация: нет
Всего: нет



Ладно... вот здесь происходит то, что мне нужно:

Код
// A reply of an other article.
if ($type=="reply") {
//  $ns=OpenNNTPconnection($server,$port);
 $message=read_message($id,0,$group);
 $head=$message->header;
 convert_cyr_string($message,"a","k");
 $body=explode("\n",$message->body[0]);
 closeNNTPconnection($ns);
 if ($head->name != "") {
   $bodyzeile=$head->name;
   convert_cyr_string($bodyzeile,"d","k");
 } else {
   $bodyzeile=$head->from;
 }
 $bodyzeile=$bodyzeile." wrote:\n\n";
 for ($i=0; $i<=count($body)-1; $i++) {
   if((isset($cutsignature)) && ($cutsignature==true) &&
      ($body[$i]=='-- '))
     break;
   if (trim($body[$i])!="") {
     $bodyzeile=$bodyzeile."> ".$body[$i]."\n";
   } else {
     $bodyzeile.="\n";
   }
   convert_cyr_string($bodyzeile,"a","k");
 }
 $subject=$head->subject;
 if (isset($head->followup) && ($head->followup != "")) {
   $newsgroups=$head->followup;
 } else {
   $newsgroups=$head->newsgroups;
 }
 splitSubject($subject);
 $subject="Re: ".$subject;
 // Cut off old parts of a subject
 // for example: 'foo (was: bar)' becomes 'foo'.
 $subject=eregi_replace('(\(wa[sr]: .*\))$','',$subject);
 convert_cyr_string($subject,"a","k");
 $show=1;
 $references=false;
 if (isset($head->references[0])) {
   for ($i=0; $i<=count($head->references)-1; $i++) {
     $references .= $head->references[$i]." ";
   }
 }
 $references .= $head->id;
}


Вот так она постится:
Код
 if ($type=="post") {
   if (!$readonly) {
     // post article to the newsserver
     $message=verschicken(quoted_printable_encode(stripslashes($subject)),
                $email." (".quoted_printable_encode($name).")",
               $newsgroups,$references,$body);



В итоге когда вызываю "Ответ" на тему, она пишет "Re: <тема в cp866 хер знает почему>", и абсолютно то же самое происходит с именем, если ввожу его кириллицей....

идеи есть? smile.gif
PM MAIL   Вверх
Smoker
Дата 8.8.2003, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.8.2003

Репутация: нет
Всего: нет



Цитата(Cepera @ 8.8.2003, 07:29)
сервак сам должен конвернуть в КОИ8-Р

Кстати, сервак ничего никому не должен smile.gif Он не будет конвертить, он просто выведет, считая, что кодировка - кои8, и ему все равно, какая она на самом деле, именно поэтому смена кодировки - задача скрипта и только его (ну либо админа, но про конфигу нашего сервера я уже писал smile.gif)
PM MAIL   Вверх
Cepera
Дата 10.8.2003, 08:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PHPexp
****


Профиль
Группа: Экс. модератор
Сообщений: 2146
Регистрация: 25.3.2002
Где: Russia, Samara

Репутация: 1
Всего: 7



я извиняюсь, но не пробовал ли ты сделать так, вместо
Код
convert_cyr_string($message,"a","k");

прописать
Код
convert_cyr_string($message,"d","k");



--------------------
I know it is heavy for reading, but I know you will read it anyway...
PM MAIL WWW ICQ   Вверх
Smoker
Дата 11.8.2003, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 8.8.2003

Репутация: нет
Всего: нет



Пробовал, не получилось smile.gif
Впрочем неважно, проблема уже решена, и дело там было совсем не в том куске....
а в некоей загадочной функции htmlentities smile.gif Как ноль в ПХП не могу знать, зачем она вообще нужна, но, удалив ее, таки заставил нормальную кодировку ставить
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0906 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.