Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: из 1251 в utf8
 
 автор: Port_Artur1   (02.11.2008 в 22:06)   письмо автору
 
 

в текстовом файле тест в формате 1251.
Как записать его в таблицу в формате utf-8.

Вот это не помогло: наверное что-то не так
 $number = "CREATE TABLE number
    (
        id_number MEDIUMINT UNSIGNED NOT NULL auto_increment,
        people VARCHAR(50)CHARACTER SET utf8,
        client VARCHAR(50)CHARACTER SET utf8,
        street VARCHAR(50)CHARACTER SET utf8,
        number BIGINT NOT NULL,
        PRIMARY KEY (id_number)
    )";

 dbConnect();
       mysql_query("SET NAMES utf-8");

  Ответить  
 
 автор: Port_Artur1   (02.11.2008 в 22:39)   письмо автору
 
   для: Port_Artur1   (02.11.2008 в 22:06)
 

на

people VARCHAR(50)CHARSET utf8 COLLATE utf8_unicode,


ошибка

Error: Unknown collation: 'utf8_unicode'

  Ответить  
 
 автор: Port_Artur1   (02.11.2008 в 22:51)   письмо автору
 
   для: Port_Artur1   (02.11.2008 в 22:39)
 

как сделать чтобы сравнение было не cp1251_general_ci, а utf8_bin?

  Ответить  
 
 автор: Port_Artur1   (02.11.2008 в 22:59)   письмо автору
 
   для: Port_Artur1   (02.11.2008 в 22:51)
 

на
 67      iconv("windows-1251", "utf-8", $people);


или

 67       $people=iconv("windows-1251", "utf-8", $people);


выдаёт

Fatal error: Call to undefined function: iconv() in z:\home\localhost\www\num.php on line 67

  Ответить  
 
 автор: ddhvvn   (02.11.2008 в 23:34)   письмо автору
 
   для: Port_Artur1   (02.11.2008 в 22:59)
 

А что тут неясного? libiconv (так вроде наз-ся библиотека) отсутствует!

  Ответить  
 
 автор: Port_Artur1   (03.11.2008 в 09:39)   письмо автору
 
   для: ddhvvn   (02.11.2008 в 23:34)
 

Покажите хоть пример, как создать таблицу чтобы у неё сравнение было не cp1251_general_ci, а utf8_bin?

  Ответить  
 
 автор: sp10   (03.11.2008 в 13:57)   письмо автору
 
   для: Port_Artur1   (03.11.2008 в 09:39)
 

Когда создаете БД добавьте следующее выражение:
CREATE DATABASE `your_db` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';

И все создаваемые таблицы в этой базе будут иметь кодировку utf8.

  Ответить  
 
 автор: Port_Artur1   (03.11.2008 в 16:51)   письмо автору
 
   для: sp10   (03.11.2008 в 13:57)
 

база уже существует и все таблицы там имеют сравнение utf8_bin
А я никак не могу создать таблицу с таким сравнением у меня всё время получается cp1251_general_ci

как исправить?

dbConnect();
    mysql_query("SET NAMES 'utf8'");
  $number = "CREATE TABLE number
    (
        id_number MEDIUMINT UNSIGNED NOT NULL auto_increment,
        people VARCHAR(50)CHARSET utf8 COLLATE utf8_bin,
        client VARCHAR(50)CHARSET utf8 COLLATE utf8_bin,
        street VARCHAR(50)CHARSET utf8 COLLATE utf8_bin,
        number BIGINT NOT NULL,
        PRIMARY KEY (id_number)
    )";

  Ответить  
 
 автор: Port_Artur1   (03.11.2008 в 17:20)   письмо автору
 
   для: Port_Artur1   (03.11.2008 в 16:51)
 

вот исходный текст скрипта сравнение теперь utf8_bin а вот даннные типа 1251 никак не получается записать чтобы они были utf8

Как сделать правильно как перевести в другую кодировку?

 <META http-equiv="Content-Type" content="text/html; charset=utf-8">

<?php
        
require( "function.php" );
        
$dbLink mysql_connect$dbHost$dbUser$dbPass );



        
mysql_select_db$dbName );
 
////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////////
        
dbConnect();
    
mysql_query("SET NAMES 'utf8'");
  
$number "CREATE TABLE number
    (
        id_number MEDIUMINT UNSIGNED NOT NULL auto_increment,
        people VARCHAR(50)CHARSET utf8 COLLATE utf8_bin,
        client VARCHAR(50)CHARSET utf8 COLLATE utf8_bin,
        street VARCHAR(50)CHARSET utf8 COLLATE utf8_bin,
        number BIGINT NOT NULL,
        PRIMARY KEY (id_number)
    )CHARACTER SET utf8 COLLATE utf8_bin;"
;

////////////////////////////////////////////////////////////////////////////////

  
mysql_query$number ) or errormysql_error() );
       echo 
"<CENTER><H4>База данных уже существует!</H4></CENTER>\n";


///////////////////////////////////////////////////

//     set_time_limit(100000);//////////////



  
$file_number = array("number.txt");


  echo 
"Начинаем заносить в базу ";
  for (
$wn=0;$wn<=count($file_number)-1;$wn++)
 {


    
$fm=file($file_number[$wn]);//////////////
    
foreach ($fm as $value)
  {




    
$LLLL=$value;



       
$element explode(";"$value);
         echo 
"$element";
     
$people=$element[1];
     
$people=iconv("windows-1251""utf-8"$people);
     
$client=$element[2];
     
$client=iconv("windows-1251""utf-8"$client);
     
$street=$element[3];
     
$street=iconv("windows-1251""utf-8"$street);
     
$number=$element[4];

     
mysql_query"INSERT INTO number (people, client, street, number)
     VALUES ( '
$people', '$client', '$street', '$number')" )
             or 
errormysql_error() );


   }

  }


    
mysql_close$dbLink );
    
?>

  Ответить  
 
 автор: Port_Artur1   (03.11.2008 в 17:27)   письмо автору
 
   для: Port_Artur1   (03.11.2008 в 17:20)
 

причём если раньше поиск по этой таблице работал отменно то теперь в результат выдаёт всю таблицу да ещё и не втой кодировке!!!

 $query = mysql_query ("SELECT people, client, street, number FROM number WHERE people like '%$zapr%' or client like '%$zapr%' or street like '%$zapr%' or number like '%$zapr%' ") or error (mysql_error());    



Почему?

  Ответить  
 
 автор: Port_Artur1   (03.11.2008 в 17:40)   письмо автору
 
   для: Port_Artur1   (03.11.2008 в 17:27)
 

скрипт в utf8 данные в таблице тоже в utf8 а поиск перестал работать и выводит вопросы в ромбах причём всю таблицу полностью

Почему?

  Ответить  
 
 автор: Port_Artur1   (03.11.2008 в 17:57)   письмо автору
 
   для: Port_Artur1   (03.11.2008 в 17:40)
 

$number = "CREATE TABLE number
(
id_number MEDIUMINT UNSIGNED NOT NULL auto_increment,
people VARCHAR(50)CHARSET utf8 COLLATE utf8_general_ci,
client VARCHAR(50)CHARSET utf8 COLLATE utf8_general_ci,
street VARCHAR(50)CHARSET utf8 COLLATE utf8_general_ci,
number BIGINT NOT NULL,
PRIMARY KEY (id_number)
)CHARACTER SET utf8 COLLATE utf8_general_ci;";

  Ответить  
 
 автор: Port_Artur1   (03.11.2008 в 17:58)   письмо автору
 
   для: Port_Artur1   (03.11.2008 в 17:40)
 

Сделал, чтобы запросы были регистронезависимыми но результат тот же!

 $number = "CREATE TABLE number
    (
        id_number MEDIUMINT UNSIGNED NOT NULL auto_increment,
        people VARCHAR(50)CHARSET utf8 COLLATE utf8_general_ci,
        client VARCHAR(50)CHARSET utf8 COLLATE utf8_general_ci,
        street VARCHAR(50)CHARSET utf8 COLLATE utf8_general_ci,
        number BIGINT NOT NULL,
        PRIMARY KEY (id_number)
    )CHARACTER SET utf8 COLLATE utf8_general_ci;";

  Ответить  
 
 автор: Port_Artur1   (03.11.2008 в 20:04)   письмо автору
 
   для: Port_Artur1   (03.11.2008 в 17:58)
 

после добавления
 mysql_query("SET NAMES 'utf8'");


получилось так

mysql_query("SET NAMES 'utf8'");
                   $query = mysql_query ("SELECT people, client, street, number FROM number WHERE people like '%$zapr%' or client like '%$zapr%' or street like '%$zapr%' or number like '%$zapr%' ") or error (mysql_error());    


проблемы с кодировкой решились и их больше нет (проблем)

но почему под utf8 не работает поиск, а под 1251 работал?
я могу понять когда ничего не выводит, но почему выводит всю таблицу с первой записи по последнюю?

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования