Добрый день столкнулся с такой проблемой ( есть скрипт магазина http://conceptlogic.com/jcart/ у меня с ним проблем-ка не могу вывести русский текст корректно сечас выводит так: РЅРѕСЃРєРё Код (Text): header('Content-type: text/html; charset="windows-1251"',true); setlocale(LC_ALL, 'ru_RU'); include_once('config.php'); if (!$config['currencyCode']) $config['currencyCode'] = 'USD'; ... if ( $_GET['ajax'] == 'true') { header('Content-type: application/json; charset=utf-8'); echo iconv('UTF-8', 'windows-1251', json_encode($config)); } оригинальный код выглядит так Код (Text): if ($_GET['ajax'] == 'true') { header('Content-type: application/json; charset=utf-8'); echo json_encode($config); } как я понимаю проблема у меня только с этим блоком... Я по разному побывал вывести если выводит русский текст то добавляется только один товар( новый перебивает старый при добавления позиций в меню
Re: jCart- магазин карячет русский текст, проблема с выводом Непостоянство заголовков вижу я. Мой юный падаван! Что заставляет вас писать то так, то этак?
Re: jCart- магазин карячет русский текст, проблема с выводом Хочется получить приятный результат, такого я не получил( и яву знаю ... пипец как )) Почему по разному? потому что читаешь проверяешь, читаешь проверяешь, читаешь проверяешь, читаешь проверяешь Есть идей как вести нормальное русло этот дивайс?
Re: jCart- магазин карячет русский текст, проблема с выводом смотри заголовки -- почему так написано?!! ты понимаешь, что такое "заголовки" и для чего они? )))
Re: jCart- магазин карячет русский текст, проблема с выводом общение между сервером и браузером Код (Text): header('Content-type: text/html; charset="windows-1251"',true); setlocale(LC_ALL, 'ru_RU'); ajax по умолчанию работает по утф-8 а русская (кирилица) работает по вин-1251. Если я не ошибаюсь я сделал подмену кодировок, но на сколько корректно не знаю
Re: jCart- магазин карячет русский текст, проблема с выводом Ты же видишь результат. Не понимаю зачем спорить с реальностью.
Re: jCart- магазин карячет русский текст, проблема с выводом У меня FAR достал( кодировку документа менять стал... пока не гуглил че за ... но кодировка документа правильная через дренвейр делаю хоть и не удобно так( По этой причине у меня не понятки(( до этого я вывел но Far мне помог с кодировкой и сейчас боюсь юзать его чтоб он снова кодировку мне не перелопатил сам( Хотя есть подозрение что где то валяется файлик с утф8 кодировкой( Добавлено спустя 4 минуты 13 секунд: Re: jCart- магазин карячет русский текст, проблема с выводом по Предлагаете забить на данный скрипт? вот рабочий от рус. авторов http://jcart.info/ магазин тот же но по коду что то нового я не нашол, и он у меня не работает корректно. Именно иза кодировки документа лапатит все по новой запарился(
Re: jCart- магазин карячет русский текст, проблема с выводом Предлагаю забить на программирование. Иди работать на радио, ящитаю!
Re: jCart- магазин карячет русский текст, проблема с выводом это все ровно что сказать купи баян, зачем пох.. купи баян зачем тупо флудить ? могли уже просто промолчать...
Re: jCart- магазин карячет русский текст, проблема с выводом Я же тебе первым сообщением сказал в чем проблема. Ты упорно закрываешь на это глаза, о чем это говорит? По моему очевидно. У тебя всегда будет виноват кто-то: автор программы, far, девочка из 8-б, кто угодно. На самом деле ты боишься приложить усилия и разобраться. Хочешь поговорить об этом? Добавлено спустя 9 минут 53 секунды: Re: jCart- магазин карячет русский текст, проблема с выводом по Объясняю на пальцах. Простой эксперимент: - запусти FAR, создай новый файл по Shift+F4, включи кодировку Windows-1251 (по F8) - скопируй свой текст: РЅРѕСЃРєРё и вставь его в редакторе FAR - не выходя из редактора переключи кодировку на UTF-8. Увидел слово? Что это значит: браузер считает, что страница в 1251, тогда как на самом деле текст в utf-8. Откуда он взялся -- я без понятия. И ты тоже. Потому что ты своими ебанутыми конвертациями и мнимым переключением кодировки ты только усложняешь задачу, а надо упрощать.
Re: jCart- магазин карячет русский текст, проблема с выводом ООО я походу идиот )) все файлы находятся в кодировке винт 1251 и это я ПЕРВЫМ ДЕЛОМ ПРОВЕРИЛ и как пользоваться фаром не стоит учить, просто внимательные надо читать! скрипты аякс работают с кодировкой утф-8 и если у тебя будет кодировка документа вин ему будет пох... я скинул скрипт попросил помочь корректно вывести класс объясните artoodetoo я спрашивал почему они вылазят или просил помочь с крип том. Зачем и к чему этот срач? Вам нравиться унизить когото или показать какой я умный а вы все ТУПЫЕ. Некрасиво.... Добавлено спустя 20 минут 47 секунд: Re: jCart- магазин карячет русский текст, проблема с выводом по ага только маленькая поправочка, с начало надо создать UTF-8 скопировать текст сохранить и перевести Windows-1251 тогда получиться текст))) а как вы говорите другие просто карабки выведет Приставь идиот сумел вывести слово и это было сказано в первом сообщений только проблема в том крутиться одна сессия и когда добавляешь товар он его перебивает, и об-этом тоже было сказано выше ))) Страно такие как ВЫ не обозвали школьником ))) я долго ждал от Вас этого, Вы меня подвели( Хд Попробуем все сначала или дальше агриться будем?
Re: jCart- магазин карячет русский текст, проблема с выводом Да, попробуй всё сначала. Добавлено спустя 1 минуту 35 секунд: Re: jCart- магазин карячет русский текст, проблема с выводом по да нет, я описал буквально то что сделал, чистая практика. сопротивляйся реальности дальше )))
Re: jCart- магазин карячет русский текст, проблема с выводом Код (Text): $f = json_encode($config); $f = iconv('UTF-8', 'windows-1251', $_GET['f']); Так я вывел русский текст но при добавлений нового товара он прибиваться новым добавленным ( отправляться 100% кириллица, а вот вывести вызывает у меня проблему( если надо выложу сам скрипт json_encode
Re: jCart- магазин карячет русский текст, проблема с выводом а что мешает использовать utf-8 всегда и везде, без шаманства?
Re: jCart- магазин карячет русский текст, проблема с выводом ajax имет такое противное свойство менять кодировку текста под утф-8( по этой причине у меня текст так выводит, моя задача из утф-8 перевести на винт 1251 меняется текст в самом уже движке где добавляется товар, если вывести так как есть получиться текст в утф-8 на вин-1251 странице Вы правильно заметили что корячет вывод класса как корекно вывести или переписать самом движке чето не хватает ума... Добавлено спустя 7 минут 57 секунд: Re: jCart- магазин карячет русский текст, проблема с выводом по Код (Text): private function add_item($id, $name, $price, $qty = 1, $url) { $validPrice = false; $validQty = false; // Verify the price is numeric if (is_numeric($price)) { $validPrice = true; } if ($this->config['encoding'] == 'windows-1251') { $id = iconv('utf-8', 'windows-1251', $id); $name = iconv('utf-8', 'windows-1251', $name); $url = iconv('utf-8', 'windows-1251', $url); $size = iconv('utf-8', 'windows-1251', $size); $color = iconv('utf-8', 'windows-1251', $color); $param = iconv('utf-8', 'windows-1251', $param); } // If decimal quantities are enabled, verify the quantity is a positive float if ($this->config['decimalQtys'] === true && filter_var($qty, FILTER_VALIDATE_FLOAT) && $qty > 0) { $validQty = true; } // By default, verify the quantity is a positive integer elseif (filter_var($qty, FILTER_VALIDATE_INT) && $qty > 0) { $validQty = true; } // Add the item if ($validPrice !== false && $validQty !== false) { // If the item is already in the cart, increase its quantity if($this->qtys[$id] > 0) { $this->qtys[$id] += $qty; $this->update_subtotal(); } // This is a new item else { $this->items[] = $id; $this->names[$id] = $name; $this->prices[$id] = $price; $this->qtys[$id] = $qty; $this->urls[$id] = $url; } $this->update_subtotal(); return true; } elseif ($validPrice !== true) { $errorType = 'price'; return $errorType; } elseif ($validQty !== true) { $errorType = 'qty'; return $errorType; } } ах да забыл я этот файл пдправил
Ладно, я не понимаю кому нужен 1251 в XXI веке, но пускай! Не буду качать и портить чужой движок, сделаю свой маленький пример. json_encode(), насколько я вижу, обламывается с русским текстом в виндовой кодировке. Ему на вход надо подавать utf-8. Вот я и набросал пример, в котором само тело страницы в windows-1251, а config.php содержит данные в utf-8 -- я эти данные никак НЕ iconv-ертирую, а отправляю как есть. index.php Код (PHP): <?php /* charset=windows-1251 */ if (isset($_GET['ajax']) && ($_GET['ajax'] == 'true')) { header('Content-type: application/json; charset=utf-8'); echo json_encode(require('./config.php')); die(); } header('Content-type: text/html; charset="windows-1251"',true); ?> <!DOCTYPE HTML> <head> <meta charset="windows-1251"> <script type="text/javascript" language="JavaScript" src="http://code.jquery.com/jquery-1.9.0.min.js"></script> <script type="text/javascript" language="JavaScript"> $(function() { var content = $('#content'); $.ajax({ url: 'index.php?ajax=true', dataType : "json", success: function (data, textStatus) { $.each(data, function(i, val) { content.append('<p>'+val+'</p>'); }); } }); }); </script> </head> <body> <div id="content"> <p>ололо</p> </div> </body> </html> config.php Код (PHP): <?php /* charset=utf-8 */ return array( 'john doe', 'пыщпыщ', 'рас-рас'); Мой тестовый полигон: Win7 64bit, Apache 2.2, PHP 5.3, Firefox 18.0.2. результат: Код (Text): ололо john doe пыщпыщ рас-рас Что я делаю не так, почему у меня всё работает?
Re: jCart- магазин карячет русский текст, проблема с выводом и я с поймал и сам якарт в студию Код (Text): // jCart v1.3 // http://conceptlogic.com/jcart/ $(function() { var JCART = (function() { // This script sends Ajax requests to config-loader.php and relay.php using the path below // We assume these files are in the 'jcart' directory, one level above this script // Edit as needed if using a different directory structure var path = 'jcart', container = $('#jcart'), token = $('[name=jcartToken]').val(), tip = $('#jcart-tooltip'); var config = (function() { var config = null; $.ajax({ url: path + '/config-loader.php', data: { "ajax": "true" }, dataType: 'json', async: false, success: function(response) { config = response; }, error: function() { alert('Ajax error: Edit the path in jcart.js to fix.'); } }); return config; }()); var setup = (function() { if(config.tooltip === true) { tip.text(config.text.itemAdded); // Tooltip is added to the DOM on mouseenter, but displayed only after a successful Ajax request $('.jcart [type=submit]').mouseenter( function(e) { var x = e.pageY + 25, y = e.pageX + -10; $('body').append(tip); tip.css({top: y + 'px', left: x + 'px'}); } ) .mousemove( function(e) { var y = e.pageY + 25, x = e.pageX + -10; tip.css({top: y + 'px', left: x + 'px'}); } ) .mouseleave( function() { tip.hide(); } ); } // Remove the update and empty buttons since they're only used when javascript is disabled $('#jcart-buttons').remove(); // Default settings for Ajax requests $.ajaxSetup({ type: 'POST', url: path + '/relay.php', success: function(response) { // Refresh the cart display after a successful Ajax request container.html(response); $('#jcart-buttons').remove(); }, // See: http://www.maheshchari.com/jquery-ajax-error-handling/ error: function(x, e) { var s = x.status, m = 'Ajax error: ' ; if (s === 0) { m += 'Check your network connection.'; } if (s === 404 || s === 500) { m += s; } if (e === 'parsererror' || e === 'timeout') { m += e; } alert(m); } }); }()); // Check hidden input value // Sent via Ajax request to jcart.php which decides whether to display the cart checkout button or the PayPal checkout button based on its value // We normally check against request uri but Ajax update sets value to relay.php // If this is not the checkout the hidden input doesn't exist and no value is set var isCheckout = $('#jcart-is-checkout').val(); function add(form) { // Input values for use in Ajax post var itemQty = form.find('[name=' + config.item.qty + ']'), itemAdd = form.find('[name=' + config.item.add + ']'); // Add the item and refresh cart display $.ajax({ data: form.serialize() + '&' + config.item.add + '=' + itemAdd.val(), success: function(response) { // Momentarily display tooltip over the add-to-cart button if (itemQty.val() > 0 && tip.css('display') === 'none') { tip.fadeIn('100').delay('400').fadeOut('100'); } container.html(response); $('#jcart-buttons').remove(); } }); } function update(input) { // The id of the item to update var updateId = input.parent().find('[name="jcartItemId[]"]').val(); // The new quantity var newQty = input.val(); // As long as the visitor has entered a quantity if (newQty) { // Update the cart one second after keyup var updateTimer = window.setTimeout(function() { // Update the item and refresh cart display $.ajax({ data: { "jcartUpdate": 1, // Only the name in this pair is used in jcart.php, but IE chokes on empty values "itemId": updateId, "itemQty": newQty, "jcartIsCheckout": isCheckout, "jcartToken": token } }); }, 1000); } // If the visitor presses another key before the timer has expired, clear the timer and start over // If the timer expires before the visitor presses another key, update the item input.keydown(function(e){ if (e.which !== 9) { window.clearTimeout(updateTimer); } }); } function remove(link) { // Get the query string of the link that was clicked var queryString = link.attr('href'); queryString = queryString.split('='); // The id of the item to remove var removeId = queryString[1]; // Remove the item and refresh cart display $.ajax({ type: 'GET', data: { "jcartRemove": removeId, "jcartIsCheckout": isCheckout } }); } // Add an item to the cart $('.jcart').submit(function(e) { add($(this)); e.preventDefault(); }); // Prevent enter key from submitting the cart container.keydown(function(e) { if(e.which === 13) { e.preventDefault(); } }); // Update an item in the cart container.delegate('[name="jcartItemQty[]"]', 'keyup', function(){ update($(this)); }); // Remove an item from the cart container.delegate('.jcart-remove', 'click', function(e){ remove($(this)); e.preventDefault(); }); }()); // End JCART namespace }); // End the document ready function прошлый раз у меня таже проблема вышла вывести текс то я вывел но ... иду пока покурю подумаю может свежые мысли придут (сейчас кириллица работает но только один товар в корзине ) Добавлено спустя 58 минут 25 секунд: Re: jCart- магазин карячет русский текст, проблема с выводом по нашол причину ошибку ajaxa Код (Text): //session_unset(); //session_destroy(); для отладки я добавил ну чтоб сессия сбивал при изменениях, она мне и мозг парила по ходу( artoodetoo подскажите если я правильно понял просто что я перед овал по сессий на доходила до обработчика правильно? artoodetoo спс вам за помощь
Re: jCart- магазин карячет русский текст, проблема с выводом наздоровье! не уверен, что правильно понял вопрос, но наверное так и есть ))) спать уже хочу. удачи!
Re: jCart- магазин карячет русский текст, проблема с выводом если на сайте cp1251 а аякс робит по ютф-8, и отправляем мы ему ютф-8, но не хотим переделывать сайт под ютф-8 то придется с помощью js конвертировать в 1251 перед тем, как отдать его Добавлено спустя 59 секунд: Re: jCart- магазин карячет русский текст, проблема с выводом по
Re: jCart- магазин карячет русский текст, проблема с выводом r3l0c, удивишся, но нет, не придется перекодировать ))) таки я бы советовал ВСЁ делать в utf-8. чтобы не путаться и не тратить время на бестолковые ошибки.
И правда удивился). -- Страница в 1251, данныйе в ютф-8, браузер не знает что они в ютф-8 и получаются какашки вместо текста, следовательно надо на js полученную инфу конвертировать в 1251 и потом помещать в html. А вариант перевести весь сайт в ютф-8 ---это да, это единственное правильное решение). Но судя по сообщениям выше ТС не хочет (хз почему) перевести весь сайт в ютф-8 Добавлено спустя 3 минуты 57 секунд: Re: jCart- магазин карячет русский текст, проблема с выводом по Код (PHP): private function add_item($id, $name, $price, $qty = 1, $url) { $validPrice = false; $validQty = false; // Verify the price is numeric if (is_numeric($price)) { $validPrice = true; } if ($this->config['encoding'] == 'windows-1251') { $id = iconv('utf-8', 'windows-1251', $id); $name = iconv('utf-8', 'windows-1251', $name); $url = iconv('utf-8', 'windows-1251', $url); $size = iconv('utf-8', 'windows-1251', $size); $color = iconv('utf-8', 'windows-1251', $color); $param = iconv('utf-8', 'windows-1251', $param); } Тут колор, сайз и парам не определены, или мне кажется?
Re: jCart- магазин карячет русский текст, проблема с выводом а когда браузер (или js, я не вникал) получает правильный заголовок с указанием реальной кодировки, то всё перекодируется на лету как бы само. пример парой постов выше. но это так, для эрудиции, а не для жизни.
Еще для эрудиции. Про перекодирование. Топикстартер привел такой фрагмент Код (PHP): iconv('UTF-8', 'windows-1251', json_encode($config)) реально он НИЧЕГО НЕ ДЕЛАЕТ. вот демонстрация: Код (PHP): <?php /* charset=utf-8 */ $array = array( 'john doe', 'пыщпыщ', 'рас-рас. этот массив отправлен в utf-8'); $json1 = json_encode($array); $json2 = iconv('UTF-8', 'windows-1251', $json1); echo ($json1 === $json2) ? 'YES' : 'NO'; выведет "YES". внутри текста с джейсоном нет русских букв, там коды вида \u0432\u043b\u0435\u043d, их iconv никак не изменит
Re: jCart- магазин карячет русский текст, проблема с выводом Еще раз спасибо), не знал что json_encode настолько жостко пакует в json). Всегда думал, что там просто json вида плаинтекст с экранированием опасных символов).