Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> mysql utf8 и regexp 
:(
    Опции темы
wpp
Дата 18.5.2006, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 25.5.2003

Репутация: нет
Всего: нет



Что-бы не говорили 
Код

set names utf8

Код

Variable_name    Value
character_set_client    utf8
character_set_connection    utf8
character_set_database    utf8
character_set_results    utf8
character_set_server    utf8
character_set_system    utf8
character_sets_dir    /usr/share/mysql/charsets/


В скрипте
Код

use encoding "utf-8";
...
while (my $h = $sth->fetchrow_hashref){
   $h->{'tag'} =~ m/^(\p{L}{1})/;
   warn $1;
   warn length $h->{'tag'};
...



Не видит русских букв, length показывает удвоенную длину русских слов. В таблице строки действительно в utf8. Я что-то не сделал? Вроде бы всегда так делал и все работало smile 
PM   Вверх
korob2001
Дата 18.5.2006, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 31
Всего: 61



Попробуй так, по крайней мере я всегда пользуюсь этим модулем, для подобного конвертирования:
Код
use Text::Iconv;
my $enc = Text::Iconv->new("UTF-8","WINDOWS-1251");
...
while (my $h = $sth->fetchrow_hashref) {
   $enc->convert($h->{'tag'}) =~ m/^(\p{L}{1})/;
   warn $1;
   warn length $h->{'tag'};
...
  

Это сообщение отредактировал(а) korob2001 - 18.5.2006, 22:48


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
nitr
Дата 18.5.2006, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2543
Регистрация: 10.2.2006
Где: Россия :)

Репутация: 37
Всего: 84



perldoc Encode - великолепный модуль для работы с кодировками, мспользуй методы encode и decode! 


--------------------
PM   Вверх
sharq
Дата 19.5.2006, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



wpp
Цитата(wpp @  18.5.2006,  22:35 Найти цитируемый пост)
length показывает удвоенную длину русских слов

нужно length использовать так:
Код

my $length = do{use bytes; length($str)};


Плюс почитай
Цитата

perldoc perluniintro
perldoc perlunicode


 smile  


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
wpp
Дата 19.5.2006, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 85
Регистрация: 25.5.2003

Репутация: нет
Всего: нет



nitrkorob2001, Мне не надо конвертировать. В таблице строки в юникоде и конвертировать их не надо . Даже не понимаю, почему Вы решили, что мне надо строку конвертировать.


sharqbytes - Perl pragma to force byte semantics rather than character semantics Каким боком это приплелось? Мне нужна длина строки в символах, а не в байтах.
Цитата

Плюс почитай
Цитата

perldoc perluniintro
perldoc perlunicode


Советую  Вам поступить в соответсвии с Вашим советом. 
PM   Вверх
sharq
Дата 19.5.2006, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 23
Всего: 28



wpp
Цитата(wpp @  19.5.2006,  11:30 Найти цитируемый пост)
Советую  Вам поступить в соответсвии с Вашим советом.  

Спасибо! Знаком.  smile 

Давайте вместе прочитаем предложенные руководства
 smile 
Цитата

perldoc perluniintro
perldoc perlunicode


Цитата

perdoc -f length


Я, надеюсь, ты понимаешь, почему в два раза больше?

 smile   

Это сообщение отредактировал(а) sharq - 21.5.2006, 07:39


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0696 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.