Код (Text): //сам файл скрипта в кодировке UTF-8 function get_array(данные поступают из csv файла в кодировке cp1251 в виде многомерного массива){ //добавляю один элемент к этому массиву } $zakaz = get_array($price_zakaz, iconv('utf-8', 'cp1251','заказ')); function into_csv(записываю полученный массив в файл csv){ кодировка при записи в файл получается cp1251 } если открыть файл в notepad++ то видно что кодировка ANSI все русские символы видно прекрасно, но когда я опять считываю данные из уже полученного файла, то те данные которые были изначально я перекодирую в UTF-8 так Код (Text): function cp1251_utf8( $sInput ){ $sOutput = ""; for ( $i = 0; $i < strlen( $sInput ); $i++ ){ $iAscii = ord( $sInput[$i] ); if ( $iAscii >= 192 && $iAscii <= 255 ) $sOutput .= "&#".( 1040 + ( $iAscii - 192 ) ).";"; else if ( $iAscii == 168 ) $sOutput .= "&#".( 1025 ).";"; else if ( $iAscii == 184 ) $sOutput .= "&#".( 1105 ).";"; else $sOutput .= $sInput[$i]; } return $sOutput; } $value[2] = cp1251_utf8($value[2]); почему так, потому что iconv не конвертирует почемуто. и выводится на экран всё супер, а если пытаюсь также перекодировать вот этот элемент массива Код (Text): 'заказ' который я добавил сам - вообще выводит пустую ячейку! если не применять вообще function cp1251_utf8 то русский текст вообще не выводится не тот что был ни тот что добавил. Код (Text): $status = iconv('cp1251','utf-8',$value['5']); //это то что я добавил не работает!!! на хостинге на Денвере работает без проблем. как быть? перепробовал много вариантов смены кодировки ничего не нашёл чтоб у меня сработало. скрипт работает как модуль Joomla если это имеет значение.
спасибо, попробую. я пробовал так Код (Text): mb_internal_encoding("UTF-8"); но толку от этого никакого... а не, такое сработало если в БД выгружать данные а не в файл выводить
не, определяет браузер одинаково UTF-8 что на Денвере что на хостинге. пока ещё не попробовал ваш вариант.. надо домой попасть и протестирую кодировка постоянно выносит мозг
вот такой бред на мой взгляд пришлось сделать.... но работает! Код (Text): echo setlocale(LC_ALL, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251'), PHP_EOL; $status = iconv('cp1251','utf-8', $value['5']); $status = iconv('utf-8', 'cp1251', $status); почему так работает?