|
|
|
| в текстовом файле тест в формате 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:06)
| | на
people VARCHAR(50)CHARSET utf8 COLLATE utf8_unicode,
|
ошибка
Error: Unknown collation: 'utf8_unicode'
|
| |
|
|
|
|
|
|
|
для: Port_Artur1
(02.11.2008 в 22:39)
| | как сделать чтобы сравнение было не cp1251_general_ci, а utf8_bin? | |
|
|
|
|
|
|
|
для: 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
|
| |
|
|
|
|
|
|
|
для: Port_Artur1
(02.11.2008 в 22:59)
| | А что тут неясного? libiconv (так вроде наз-ся библиотека) отсутствует! | |
|
|
|
|
|
|
|
для: ddhvvn
(02.11.2008 в 23:34)
| | Покажите хоть пример, как создать таблицу чтобы у неё сравнение было не cp1251_general_ci, а utf8_bin? | |
|
|
|
|
|
|
|
для: Port_Artur1
(03.11.2008 в 09:39)
| | Когда создаете БД добавьте следующее выражение:
CREATE DATABASE `your_db` DEFAULT CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci';
|
И все создаваемые таблицы в этой базе будут иметь кодировку utf8. | |
|
|
|
|
|
|
|
для: 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 в 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 error( mysql_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 error( mysql_error() );
}
}
mysql_close( $dbLink );
?>
|
| |
|
|
|
|
|
|
|
для: 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:27)
| | скрипт в utf8 данные в таблице тоже в utf8 а поиск перестал работать и выводит вопросы в ромбах причём всю таблицу полностью
Почему? | |
|
|
|
|
|
|
|
для: 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: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)
| | после добавления
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 работал?
я могу понять когда ничего не выводит, но почему выводит всю таблицу с первой записи по последнюю? | |
|
|
|