Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: что бы запись в файл .txt происходила в Кодирование UNICODE
 
 автор: cccp   (17.02.2006 в 04:17)   письмо автору
 
 

Как можно добавить к этим строкам одну деталь для того что бы запись в файл .txt происходила в Кодирование UNICODE


$his_f=fopen("data/history.txt","a+");
    fputs($his_f,"\n".mktime() . ":|:" . strip_tags($_POST['sendernm']) . ":|:" . strip_tags($_POST['senderml']) . ":|:" .str_replace($sign, $ch, strip_tags($_POST['senderbody'])));
    fclose($his_f);


Зарание благодарен!

   
 
 автор: cheops   (17.02.2006 в 13:42)   письмо автору
 
   для: cccp   (17.02.2006 в 04:17)
 

Вам доступна библиотека iconv?

   
 
 автор: cccp   (17.02.2006 в 14:20)   письмо автору
 
   для: cheops   (17.02.2006 в 13:42)
 

Спсибо за ответ, но извените, мне там ничего не понятно.

   
 
 автор: cheops   (17.02.2006 в 14:36)   письмо автору
 
   для: cccp   (17.02.2006 в 14:20)
 

Нет, я имею ввиду на вашем хотинге она подключена или нет - дело в том, что её не всегда подключают. В зависимости от вашего ответа будут два разных решения.

   
 
 автор: cccp   (17.02.2006 в 15:29)   письмо автору
 
   для: cheops   (17.02.2006 в 14:36)
 

А, понятно.
Тогда вот, кажется ДА.

iconv support : enabled
iconv implementation : glibc
iconv library version : 2.3.2

iconv.input_encoding : ISO-8859-1
iconv.internal_encoding : ISO-8859-1
iconv.output_encoding : ISO-8859-1

   
 
 автор: cheops   (18.02.2006 в 02:39)   письмо автору
 
   для: cccp   (17.02.2006 в 15:29)
 

Тогда можно поступить примерно так
iconv("ISO-8859-1", "UTF-8", "This is a test.");
<?php
$_POST
['sendernm'] = iconv("ISO-8859-5""UTF-8"convert_cyr_string($_POST['sendernm'],'w','i'));
$_POST['senderml'] = iconv("ISO-8859-5""UTF-8"convert_cyr_string($_POST['senderml'],'w','i'));
$_POST['senderbody'] = iconv("ISO-8859-5""UTF-8"convert_cyr_string($_POST['senderbody'],'w','i'));
$his_f=fopen("data/history.txt","a+"); 
    
fputs($his_f,"\n".mktime() . ":|:" strip_tags($_POST['sendernm']) . ":|:" strip_tags($_POST['senderml']) . ":|:" str_replace($sign$chstrip_tags($_POST['senderbody']))); 
    
fclose($his_f);
?>

   
 
 автор: cccp   (18.02.2006 в 17:49)   письмо автору
 
   для: cheops   (18.02.2006 в 02:39)
 

Ок, спасибо.
А вообще UTF-8 это лучшее Кодирование?
Потому что мне надо хто бы я потом мог все языки прочитать. А то мне и по русски церилицой пишут и Латинскими буквами.

   
 
 автор: cccp   (18.02.2006 в 20:12)   письмо автору
 
   для: cccp   (18.02.2006 в 17:49)
 

Нефига что-то не получилось.
:(

Смотри как слово "Привет" записалось:

&#1055;&#1088;&#1080;&#1074;&#1077;&#1090;

   
 
 автор: cheops   (18.02.2006 в 22:44)   письмо автору
 
   для: cccp   (18.02.2006 в 20:12)
 

Это в файл пишется? (Почему спрашиваю, это более характерно для MySQL)

   
 
 автор: cccp   (19.02.2006 в 00:12)   письмо автору
 
   для: cheops   (18.02.2006 в 22:44)
 

Да, в файл history.txt

   
 
 автор: cccp   (20.02.2006 в 16:35)   письмо автору
 
   для: cccp   (19.02.2006 в 00:12)
 

ну так что?
Значит выхода нет?

   
 
 автор: XPraptor   (20.02.2006 в 16:48)   письмо автору
 
   для: cccp   (20.02.2006 в 16:35)
 

Ну почему же нет вот держи:

//указываем в какой кодировке нам поступают данные на вход
iconv_set_encoding("output_encoding", "windows-1251");
//записываем значение кодировки в переменную
$enc=iconv_get_encoding("output_encoding");
//пишем текст в переменую
$str="String Стринг";
//перекодируем то, что у нас получилось в требуемую кодировку - UTF-16LE - наиболее полная кодировка с поддержкой рус
$str = iconv($enc, "UTF-16LE", $str);
//открываем файл
$fu=fopen('file.txt',"a+");
//записываем первые два байта для правильной идентификации кодировки файла
fwrite ($fu, "\xFF");
fwrite ($fu, "\xFE");
//записываем в файл данные
fwrite($fu,$str);
// закрываем файл
fclose($fu);

   
 
 автор: cccp   (20.02.2006 в 17:40)   письмо автору
 
   для: XPraptor   (20.02.2006 в 16:48)
 

Спасибо.

А помогите мне это сюда втюрить, пожлауста.



    if(file_exists("data/history.txt")){
       $new_id=1;
       $fd = file("data/history.txt");
       for($i=0;$i<count($fd);$i++) {
            $id=explode(":|:",$fd[$i]);
               if ($id[0]>=$new_id) $new_id=$id[0]+1;
       }
    } else $new_id=1;
    $his_f=fopen("data/history.txt","a+");
    fputs($his_f,"\n".$new_id.":|:".mktime(). ":|:". stripslashes(strip_tags($_POST['sendernm'])). ":|:". strip_tags($_POST['senderml']). ":|:". $_SERVER['REMOTE_ADDR']. ":|:". stripslashes(str_replace($sign,$ch,htmlspecialchars($_POST['senderbody']))));
    fclose($his_f);

   
 
 автор: XPraptor   (20.02.2006 в 17:58)   письмо автору
 
   для: cccp   (20.02.2006 в 17:40)
 

В строке fputs($his_f,"\n".$new_id.":|:".mktime().":|:". не пиши сразу запись, а сначала присвой это все переменной иее переконвертируй, а потом запиши.

   
 
 автор: cccp   (20.02.2006 в 20:08)   письмо автору
 
   для: XPraptor   (20.02.2006 в 17:58)
 

Блин...я понимаю (вроде) на словах, а трудно понять на деле...честное слово.

А можно ещё более визуально объястнить?

   
 
 автор: cccp   (22.02.2006 в 18:25)   письмо автору
 
   для: cccp   (20.02.2006 в 20:08)
 

Подскажите пожалуста...Так правильно?


if(file_exists("data/history.txt")){ 
       $new_id=1; 
       $fd = file("data/history.txt"); 
       for($i=0;$i<count($fd);$i++) { 
            $id=explode(":|:",$fd[$i]); 
               if ($id[0]>=$new_id) $new_id=$id[0]+1; 
       } 
    } else $new_id=1; 
iconv_set_encoding("$senderbody", "ISO-8859-5");    
$enc=iconv_get_encoding("$senderbody");
$str = iconv($enc, "UTF-16LE", $str);
$str="String Стринг";
$str = iconv($enc, "UTF-16LE", $str);
$his_f=fopen("data/history.txt","a+"); 
    fputs($his_f,"\n".$new_id.":|:".mktime(). ":|:". stripslashes(strip_tags($_POST['sendernm'])). ":|:". strip_tags($_POST['senderml']). ":|:". $_SERVER['REMOTE_ADDR']. ":|:". stripslashes(str_replace($sign,$ch,htmlspecialchars($_POST['senderbody'])))); 
    fclose($his_f); 

   
 
 автор: XPraptor   (24.02.2006 в 13:21)   письмо автору
 
   для: cccp   (22.02.2006 в 18:25)
 

Ну млина приколист :))
$str="String Стринг";
Это я тебе показал где строку писать, которая перекодируется.
Соответственно тут должна быть твоя строка, которую ты в файл пишешь.
А именно все, что после fputs($his_f,
это и есть строка, которую ты пишешь в файл, именно ее ты и должен перекодировать.
И запись первых двух байтов для определения кодировки нужно лишь однажды сделать при создании файла, а потмо их больше не писать.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования