Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.04.2012, 13:11   #21
Green4el
Форумчанин
 
Регистрация: 16.04.2012
Сообщений: 146
По умолчанию

В начале дополнительно прописал

Код:
header('Content-type: text/html; charset=windows-1251');
+

Код:
$note = iconv('utf-8', 'windows-1251', $note1);
Но всё по-прежнему:
Код:
Incorrect string value: '\xC4\xE5\xED\xFC -...' for column 'name' at row 1
Green4el вне форума Ответить с цитированием
Старый 18.04.2012, 13:20   #22
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Покажите полный код обработчика - с этими изменениями.
Что выведет такой код, перед iconv:
PHP код:
echo mb_detect_encoding($note1,'UTF-8,CP1251'); 
Andkorol вне форума Ответить с цитированием
Старый 18.04.2012, 13:25   #23
Green4el
Форумчанин
 
Регистрация: 16.04.2012
Сообщений: 146
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Покажите полный код обработчика - с этими изменениями.
Что выведет такой код, перед iconv:
PHP код:
echo mb_detect_encoding($note1,'UTF-8,CP1251'); 
PHP код:
header('Content-type: text/html; charset=windows-1251');
***
$note1 mysql_real_escape_string($_POST['text']);
    echo 
mb_detect_encoding($note1,'UTF-8,CP1251');
    
$note iconv('utf-8''windows-1251'$note1);
    
$id mysql_real_escape_string($_POST['id']);
    
$sql "UPDATE `system_files_records` SET `name`='" $note "' WHERE `id`='" $id "' LIMIT 1";
    
mysql_query($sql,$dbh);
    echo 
mysql_error($dbh);
    
var_dump($note);
    
var_dump($id);
    echo (
$note);
    echo (
$id);
    echo (
$sql); 
Ответ:

Код:
UTF-8
Incorrect string value: '\xC4\xE5\xED\xFC -...' for column 'name' at row 1
string(13) "День - ДиДюЛя" 
string(4) "3515" 
День - ДиДюЛя
3515
UPDATE `system_files_records` SET `name`='День - ДиДюЛя' WHERE `id`='3515' LIMIT 1
Green4el вне форума Ответить с цитированием
Старый 18.04.2012, 13:30   #24
Green4el
Форумчанин
 
Регистрация: 16.04.2012
Сообщений: 146
По умолчанию

На всякий случай ещё вот так попробовал, но тоже самое:
Код:
$note = mysql_real_escape_string(iconv('utf-8', 'windows-1251', $_POST['text']));
Green4el вне форума Ответить с цитированием
Старый 18.04.2012, 13:35   #25
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,149
По умолчанию

а точно не обновляет запись? и вообще есть такая запись с таким id в бд?
ADSoft вне форума Ответить с цитированием
Старый 18.04.2012, 13:37   #26
Green4el
Форумчанин
 
Регистрация: 16.04.2012
Сообщений: 146
По умолчанию

Цитата:
Сообщение от ADSoft Посмотреть сообщение
а точно не обновляет запись? и вообще есть такая запись с таким id в бд?
Точно не обновляет, точно есть. Обновляет когда нет кириллицы.
Green4el вне форума Ответить с цитированием
Старый 18.04.2012, 13:38   #27
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Как насчет такой функции:
PHP код:
function utf8_to_cp1251($s
  { 
  if ((
mb_detect_encoding($s,'UTF-8,CP1251')) == "UTF-8"
    { 
    for (
$c=0;$c<strlen($s);$c++) 
      { 
      
$i=ord($s[$c]); 
      if (
$i<=127$out.=$s[$c]; 
      if (
$byte2
        { 
        
$new_c2=($c1&3)*64+($i&63); 
        
$new_c1=($c1>>2)&5
        
$new_i=$new_c1*256+$new_c2
        if (
$new_i==1025
          { 
          
$out_i=168
          } else { 
          if (
$new_i==1105
            { 
            
$out_i=184
            } else { 
            
$out_i=$new_i-848
            } 
          } 
        
$out.=chr($out_i); 
        
$byte2=false
        } 
        if ((
$i>>5)==6
          { 
          
$c1=$i
          
$byte2=true
          } 
      } 
    return 
$out
    } 
  else 
    { 
    return 
$s
    } 
  } 
?
Andkorol вне форума Ответить с цитированием
Старый 18.04.2012, 13:41   #28
Green4el
Форумчанин
 
Регистрация: 16.04.2012
Сообщений: 146
По умолчанию

Цитата:
Сообщение от Andkorol Посмотреть сообщение
Как насчет такой функции:?
Тоже самое, если я конечно правильно ей воспользовался...
Вставил функцию и потом:

Код:
$note = utf8_to_cp1251($note1);
Green4el вне форума Ответить с цитированием
Старый 18.04.2012, 13:53   #29
ADSoft
Старожил
 
Регистрация: 25.02.2007
Сообщений: 4,149
По умолчанию

структуру таблицы покажите .. поле требуемое - какой тип имеет, какое сравнение установлено
ADSoft вне форума Ответить с цитированием
Старый 18.04.2012, 13:54   #30
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Попробуйте после установки соединения с БД и выбора БД прописать такой запрос:
PHP код:
mysql_query("SET NAMES cp1251"); 
Andkorol вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запись CD n_mitrofanow Win Api 11 20.04.2012 19:27
запись любого целого числа n (n<3999) арабскими цифрами перевести в запись римскими цифрами (на языке C) qazse Помощь студентам 1 24.11.2011 12:05
Запись CD buenosaire Помощь студентам 2 08.05.2010 21:31
Запись в БД Vitaliy3009 БД в Delphi 6 09.10.2009 14:43