Jump to content
  • 0

Опять кодировка


Arinden
 Share

Question

Здравствуйте. Знаю, что тема неоднократно поднималась, но мне, почему-то, ничего не помогает. Ситуация следующая, имеем простой .php сценарий (код для примера):

<!doctype html><html><head>     <meta charset="utf-8">     <title>Тест</title></head><body><?php     $dbc = mysqli_connect ('****', '****', '****', '****')          or die ('Ошибка');     $query = "INSERT INTO names (first_name) VALUES ('Имя')";     $result = mysqli_query ($dbc, $query)          or die ('Ошибка');     mysqli_close($dbc);?></body></html>

Файл .php в кодировке UTF-8 без BOM. База данных, таблица и колонки utf8_unicode_ci. В .htaccess прописал utf-8:

AddDefaultCharset UTF-8

в .php после соединения прописывал по разному кодировку:

mysql_query("set character_set_client='utf8'");mysql_query("set character_set_results='utf8'");mysql_query("set collation_connection='utf8_unicode_ci'");

и вот так тоже:

mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'");

и так:

mysql_query("set names 'utf8'"); 

всё безрезультатно - значение сохраняется иероглифами. При этом прямой запрос INSERT INTO в программу удалённого управления базой - сохраняет всё как надо. Подскажите, пожалуйста, где ещё может задаваться кодировка и как её поменять? База на американском хостинге с cPanel.

Edited by Arinden
Link to comment
Share on other sites

10 answers to this question

Recommended Posts

  • 0

 

Задай кодировку в .htaccess

 

Она задана. Я уже об этом написал...

 

я немного изменил не до конца прочитал сначала, бывает иногда проблемы с utf-8 чаще всего используется windows-1251

 

если не получится задай еще в теле документа

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

 

Еще одно решение, зайдите в Notepad++ и переделайте кодировку в ANSI

 

100% должно все работать либо так  либо так!

Edited by BSandro
Link to comment
Share on other sites

  • 0

попробуйте: mysql_query("SET NAMES utf8");

и в .htaccess еще добавить: PHP_VALUE default_charset utf-8

P.S. не знаю, есть ли разница между utf8_unicode_ci и utf8_general_ci, но с дженерал не было у меня таких проблем.

Link to comment
Share on other sites

  • 0

если не получится задай еще в теле документа

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

 

Еще одно решение, зайдите в Notepad++ и переделайте кодировку в ANSI

 

Спасибо за предложенное решение, но необходимо чтобы кодировка была именно utf-8.

 

попробуйте: mysql_query("SET NAMES utf8");

и в .htaccess еще добавить: PHP_VALUE default_charset utf-8

P.S. не знаю, есть ли разница между utf8_unicode_ci и utf8_general_ci, но с дженерал не было у меня таких проблем.

 

Разница только в том, что unicode кушает больше ресурсов, но лучше проявляет себя при сортировке. Я с general тоже пробовал. Сейчас добавил предложенные Вами изменения - ума не приложу, почему не помогает.

 

Вместо "Имя" написано Ð˜Ð¼Ñ

Edited by Arinden
Link to comment
Share on other sites

  • 0

 

если не получится задай еще в теле документа

<meta http-equiv="content-type" content="text/html; charset=windows-1251" />

 

Еще одно решение, зайдите в Notepad++ и переделайте кодировку в ANSI

 

Спасибо за предложенное решение, но необходимо чтобы кодировка была именно utf-8.

 

попробуйте: mysql_query("SET NAMES utf8");

и в .htaccess еще добавить: PHP_VALUE default_charset utf-8

P.S. не знаю, есть ли разница между utf8_unicode_ci и utf8_general_ci, но с дженерал не было у меня таких проблем.

 

Разница только в том, что unicode кушает больше ресурсов, но лучше проявляет себя при сортировке. Я с general тоже пробовал. Сейчас добавил предложенные Вами изменения - ума не приложу, почему не помогает.

 

Вместо "Имя" написано Ð˜Ð¼Ñ

 

Кстате, может помочь, пере создайте базу данных..

И еще через какой софт заливаете код в mysql

И вообще советую использовать http://jsfiddle.net/dKwVv/

 

Там все самое нужное и проблем не будет

Edited by BSandro
Link to comment
Share on other sites

  • 0

И еще через какой софт заливаете код в mysql

Кстате, может помочь, пере создайте базу данных..

 

Удалённо через Workbench работаю. Но когда через софт делаю, будь то Workbench или вообще phpmyadmin - всё заносится исключительно так как мне нужно. Проблема при инсерте из сценария .php

Благодарю за совет, попробую пересоздать базу и таблицу, посмотрю, что получится.

Edited by Arinden
Link to comment
Share on other sites

  • 0

 

И еще через какой софт заливаете код в mysql

Кстате, может помочь, пере создайте базу данных..

 

Удалённо через Workbench работаю. Но когда через софт делаю, будь то Workbench или вообще phpmyadmin - всё заносится исключительно так как мне нужно. Проблема при инсерте из сценария .php

Благодарю за совет, попробую пересоздать базу и таблицу, посмотрю, что получится.

 

вообще работайте через phpmyadmin

 

Ибо как раз через создание через любой другой софт возможно и есть ошибки...

 

У меня например была такая проблема в sqlong

Link to comment
Share on other sites

  • 0

Я сделал вот так:

mysqli_set_charset($dbc, "utf8");

и теперь, наконец-то, работает. Единственное, что я не могу понять, как избежать использования этой строки каждый раз после соединения? Где нужно выставить кодировку, чтобы её не требовалось указывать дополнительно? 

Link to comment
Share on other sites

  • 0

Я сделал вот так:

mysqli_set_charset($dbc, "utf8");

и теперь, наконец-то, работает. Единственное, что я не могу понять, как избежать использования этой строки каждый раз после соединения? Где нужно выставить кодировку, чтобы её не требовалось указывать дополнительно? 

Прописать в конфиге  1 раз, в моем случай это в том файле где я тебе показывал

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Similar Content

    • By Лелик
      Источник для импорта сменил кодировку с utf-8 на  windows-1251. Всвязи с этим не выполняются циклы импорта, ошибка 1064 и кириллица выводится в квадратах. Также вверху шапки сайта при загрузке страницы админки с импортом и при оформлении заказа (на другой линии) [Unknown: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in /home/p10824/xn--80agbgp3aafdnsm0c.xn--p1ai/system/library/partner.php on line 44 ]  Нужно адаптировать код по примеру [$q = 'select id, fio from `users`';
      $res = mysql_query($q);
      while (($row = mysql_fetch_assoc($res)) !== false) {
      // Преобразуем fio из utf-8/latin1 в windows-1251
      $s = iconv('utf-8', 'windows-1251', $row['fio']);
      // Преобразуем строку из однобайтной кодировки обратно в utf-8, выдав её за windows-1251
      $s = iconv('windows-1251', 'utf-8', $s);
      // Сохраняем назад в БД
      $q = 'update `users` set fio = "'.addslashes($s).'" where id = '.$row['id'];
      mysql_query($q);
      }]. Файл для работы прилагаю
      partner.php
    • By Лелик
      Опенкарт. Возник конфликт utf8  и windows1251 при импорте товаров и вообще при открытии сайта всвязи со сменой сайта-донора. Когда работало - мой сайт и донор имели кодировку utf8, сейчас кодировки различаются и скрипт не выполняется в строках
       $tmpFile = fopen ( $strqw, "r" ) ;
                  fclose ($tmpFile); .
      Весь скрипт: //register partner click
              if (!isset($_SESSION["clickreg"])){
                  $strqw="http://77.246.157.182/scripts/tp.php?a_aid=".$this->config->get('config_partner')."&a_bid=50256f5d&data1=".$this->config->get('config_prtype')."&data2=&data3=&referrer=".$this->config->get('config_url');
                  $tmpFile = fopen ( $strqw, "r" ) ;
                  fclose ($tmpFile); 
                  $_SESSION["clickreg"]=1;
                 }
              $this->render();
      Прилагаю два скрина в файле
      Что делать и где именно?

    • By Only091
      Помогите пожалуйста, не получается сделать постраничную навигацию. Делал все по урокам. в Итоге получилось сделать два разных каталога один с фильтрами другой с постраничной навигацией. И теперь я пытаюсь объединить два каталога. Но не получается. Сами файлы урока в архике каталог. Буду очень благодарен если мне помогут! catalog.phpcatalogDB.js
      каталог.7z
    • By Full-R
      Рекомендую выгодный хостинг Sprinthost, который поддерживает все версии PHP и Node.js.
      Производительность достаточная и есть возможность докупать процессные сервера. Например, для запуска ресурсоемких скриптов, которые садят сервер задницей в лужу для всех пользователей пока процесс кубаторит.
      Sprinthost.ru
      Цены спиртхоста уравновешенные, а качество обслуживания все таки повыше чем у конкурентов. Самый дешевый хостинг обходится в 118 рублей в месяц.
      Не банят при единоразовых всплесках нагрузки и дают ресурсов вплоть до потолка сервера на 1-2 часа без переплат.
      Можно регистрировать домены через reg.ru и по ночам отхватывать вкусные домены без переплат(я пол часа назад отхватил домен из 4х букв в зоне net за 1000 рублей).
      На серверах стоит Redhat или CentOS.
      Также дают бесплатные сертификаты SSL Let's Encrypt.
      Бэкап каждый день.
      Панель управления хостингом своя и очень удобная. Нет ни каких голимых запутанных опций.
    • By tor243
      Имеется таблица table с полями id, refpost, type и comment. Тип поля comment TEXT.
      Необходимо получит строки, где refpost у которой type='A' или type='D', который встречается в поле comment.
      Пробовал так:
      SELECT id, refpost, type, comment FROM table WHERE comment LIKE ( SELECT refpost FROM table WHERE type='A' OR type='D' ) Без результатов. Выдает ошибку 1242: Subquery returns more than 1 row
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy