За последние 24 часа нас посетил 55451 программист и 1710 роботов. Сейчас ищет 1501 программист ...

проблемы с кодировкой

Тема в разделе "Вопросы от блондинок", создана пользователем greendoid, 23 апр 2013.

  1. greendoid

    greendoid Новичок

    С нами с:
    23 апр 2013
    Сообщения:
    4
    Симпатии:
    0
    день добрый, вопрос не однократно обсуждался на множестве форумов про кодировки и у всех уже вызывает пену у рта когда кто-то создает такую тему вновь, но я все же рискну, так как сижу над бедой уже вторую неделю и до того как решиться создать тему, облазил не один форум
    чем я пользуюсь: IIS 6.0, php 5, sql 5.1 (управляю с помощью dbforge)
    ВЕЗДЕ стоит кодировка utf-8: базы sql в utf-8 лайкчаром даже выводил информацию

    Код (Text):
    1. character_set_client    utf8
    2. character_set_connection    utf8
    3. character_set_database  utf8
    4. character_set_filesystem    binary
    5. character_set_results   utf8
    6. character_set_server    latin1
    7. character_set_system    utf8
    8. character_sets_dir  C:\Program Files\MySQL\MySQL Server 5.1\share\charsets\

    в iis прописал в заголовках HTTP Content-type text/html; charset=utf-8

    в самом сайте кодировку utf-8, да и сам сайт сохранил в кодировке utf -8

    Код (Text):
    1. mysql_query ("SET CHARACTER SET 'utf8'");
    2. mysql_query ("set character_set_client='utf8'");
    3. mysql_query ("set character_set_results='utf8'");
    4. mysql_query ("set character_set_database='utf8'");
    5. mysql_query ("set collation_connection='utf8_general_ci'");
    6. mysql_query ("SET NAMES utf8");

    но проблема остается: должен производиться поиск по бд, если идет поиск по ангийским символам, то все на ура, иногда на ура и поиск по кириллице, НО зачастую происходит замена символов и почему так мне не понятно

    ПРИМЕР: Я ищу Иванова в базе данных, но мне отображается что поиск по базе производится по слову Иваннв и соответственно ничего не находит
    Сидоров заменяется на СШХнрнв
    а вот например Бацаев абсолютно нормально воспринимается и выдает информацию какая есть в базе по данному человеку

    Вроде все подробно описал, надеюсь поможете разобраться в этом нелегком для меня деле =)
    зы: прошу не надо писать: поставь вместо форджа пхпмайадмин, вместо ииса апач и тому подобное, такой возможности просто нет, работаю с чем есть.
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    а ты как определяешь, что заменилось?
     
  3. greendoid

    greendoid Новичок

    С нами с:
    23 апр 2013
    Сообщения:
    4
    Симпатии:
    0
    делаю вывод, грубо говоря вот куски кода формирующие вывод информации
    Это html-часть
    Код (Text):
    1. искать в: <input type="text" name="find" /> по
    2.  <Select NAME="field">
    3.  <Option VALUE="familia">фамилия</option>
    4.   </Select>
    5.  <input type="hidden" name="searching" value="yes" />
    6.  <input type="submit" name="search" value="искать!" />
    PHP-часть
    Код (Text):
    1.  
    2. if (isset($_POST['find'])) {
    3. $find       =$_POST['find'];
    4.  
    5. $find = strtoupper($find);
    6.     $find = strip_tags($find);
    7.     $find = trim ($find);
    8.  
    9.  
    10. echo "<b>поиск по:</b> " .$find;}

    собственно на выходе получается не то что я вводил
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    дык значит то что пришло в $_POST уже кривое, да?
     
  5. greendoid

    greendoid Новичок

    С нами с:
    23 апр 2013
    Сообщения:
    4
    Симпатии:
    0
    не, сейчас проверил, вывод сразу после объявления
    if (isset($_POST['find'])) {
    $find =$_POST['find'];
    вставил+ оставил старый вывод
    Получилось так: то что я ввел, вывод сразу после Пост-выдает все правильно.
    то что в самом конце-выдает искаженный вариант
     
  6. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    $find = strtoupper($find);
    после этого чтоли?
     
  7. greendoid

    greendoid Новичок

    С нами с:
    23 апр 2013
    Сообщения:
    4
    Симпатии:
    0
    так по порядку, дабы путаницы у нас небыло
    вывод намбер 1-сдесь все правильно
    Код (Text):
    1. if (isset($_POST['find'])) {
    2. $find       =$_POST['find'];
    3. echo "<b>поиск по:</b> " .$find;
    вывод намбер 2-вот тут косяк происходит
    Код (Text):
    1. $find = strtoupper($find);
    2. echo "<b>поиск по:</b> " .$find;
    закоментил строку и все встало на свои места, спасибо хоть понял что ему не нравилось
    но появился вопрос, а почему ? это ведь команда преобразования в верхний регистр ? не подскажешь для общего развития, а то раньше как-то никогда с этой командой небыло проблем
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
  9. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    потому что не-mb_* функции умеют работать только с однобайтными кодировками, типа 1251 (и то только когда локаль указана правильно)
    говорят в будущем, где-нибудь к версии PHP 7, произойдет смена приоритетов, а пока приходится постоянно помнить о том, что пыха не вполне уникодная.