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

Форум MySQL

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

 

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

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

тема: И снова кодировка :) utf8
 
 автор: btr   (27.01.2013 в 23:54)   письмо автору
 
 

Здравствуйте.

помогите запутался.

1 создаю таблицу с полем
spitch text character set utf8,


2 сама таблица
) engine=MyISAM CHARACTER SET utf8;

3 заполняется из файла
load data infile 'Z:/usr/work/311.csv' replace into table art lines terminated by '\r\n' ignore 1 lines;

файл в utf8

4 страница
<meta charset = "utf-8">


5 при подключении к базе
mysql_query("set names utf8");


данные из поля spitch выводятся как кракозябры.

меняю
 mysql_query("set names cp1251");

все отображается нормально.
??:/ ничего непонимаю...

объясните пожалуйста

  Ответить  
 
 автор: .heed   (28.01.2013 в 00:28)
 
   для: btr   (27.01.2013 в 23:54)
 

похоже на то что <meta charset = "utf-8"> не приводит к желаемому результату.
можно попробовать AddDefaultCharset в htaccess или header('Content-type: text/html; charset=utf-8') в скрипте
или в браузере Вид->Кодировка->utf8

  Ответить  
 
 автор: btr   (28.01.2013 в 13:29)   письмо автору
 
   для: .heed   (28.01.2013 в 00:28)
 

работает. страница в утф8, все русские слова в шаблоне штмл показываются правильно

  Ответить  
 
 автор: cheops   (28.01.2013 в 07:23)   письмо автору
 
   для: btr   (27.01.2013 в 23:54)
 

Содержимое my.ini/my.cnf какое?

  Ответить  
 
 автор: btr   (28.01.2013 в 10:24)   письмо автору
 
   для: cheops   (28.01.2013 в 07:23)
 

[mysql]

character-sets-dir="Z:/usr/local/mysql/share/charsets/"
default-character-set=cp1251

это имеете ввиду?
поправочка: это для клиента, но в
[mysqld]
default-character-set=cp1251

та же настройка

  Ответить  
 
 автор: btr   (28.01.2013 в 14:15)   письмо автору
 
   для: cheops   (28.01.2013 в 07:23)
 

как интересно... а почему у меня по адресу
Z:/usr/local/mysql/share/charsets/

отсутствует файл вроде utf8.xml ???

  Ответить  
 
 автор: btr   (28.01.2013 в 13:27)   письмо автору
 
   для: btr   (27.01.2013 в 23:54)
 

поможите кто-нибудь.
где я накосячил??

  Ответить  
 
 автор: Valick   (28.01.2013 в 13:31)   письмо автору
 
   для: btr   (28.01.2013 в 13:27)
 

В файле C:\WebServers\usr\local\apache\conf\httpd.conf

закомментируйте
#AddDefaultCharset windows-1251

  Ответить  
 
 автор: btr   (28.01.2013 в 14:10)   письмо автору
 
   для: Valick   (28.01.2013 в 13:31)
 

нет такой строки в конфиге

  Ответить  
 
 автор: btr   (28.01.2013 в 14:42)   письмо автору
 
   для: btr   (27.01.2013 в 23:54)
 

косвенным путем пришел к мнению, что все же не в той кодировке текст в базу затолкал. функция substr($spitch,0,13) вырезает не 14, а 7 читаемых символов.

не подскажете, как я это умудрился сделать? :О

  Ответить  
 
 автор: heed   (28.01.2013 в 16:15)   письмо автору
 
   для: btr   (28.01.2013 в 14:42)
 

Если правильно понял

>The character set indicated by the character_set_database system variable is used to interpret the information in the file. SET NAMES and the setting of character_set_client do not affect interpretation of input. If the contents of the input file use a character set that differs from the default, it is usually preferable to specify the character set of the file by using the CHARACTER SET clause, which is available as of MySQL 5.1.17.

то только character_set_database влияет на то в какой кодировке загрузит LOAD DATA INFILE
и предложено использовать CHARACTER SET в самом запросе
LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [CHARACTER SET charset_name]
    [{FIELDS | COLUMNS}
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [STARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [IGNORE number LINES]
    [(col_name_or_user_var,...)]
    [SET col_name = expr,...]

Но почему-то не слова о кодировке таблицы по умолчанию

  Ответить  
 
 автор: btr   (28.01.2013 в 16:41)   письмо автору
 
   для: heed   (28.01.2013 в 16:15)
 

Спасибо, помогло.
однако появился вопрос : в пхп substr вырезает из содержимого этого поля вдвое меньше символов, чем ему говоришь (см мой пост выше) а если нечетное количество - то в конце кракозяблю ставит.

почему так? или не то победили?

  Ответить  
 
 автор: .heed   (28.01.2013 в 16:59)
 
   для: btr   (28.01.2013 в 16:41)
 

substr в php работает с байтами а не с символами
mb_substr() наверное как вариант, mbstring вроде всегда должен присутствовать

  Ответить  
 
 автор: btr   (28.01.2013 в 17:13)   письмо автору
 
   для: .heed   (28.01.2013 в 16:59)
 

разве?
http://php.net/manual/ru/function.substr.php

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

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