Автор Тема: Perl - MySQL - Utf-8  (Прочитано 5347 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Perl - MySQL - Utf-8
« : 26 Июля 2005, 13:52:17 »
Есть программа на Perl...
Она должна выдавать данные MySQL в кодировке utf-8...
В MySQLе есть несколько записей на русском...
MySQL по умолчанию имеет кодировку utf-8...

Почему данные отображаются скриптом как знаки вопросов?
Космическая игрушка

Оффлайн Skif

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 187
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Perl - MySQL - Utf-8
« Ответ #1 : 26 Июля 2005, 14:34:01 »
use locale?
Всё будет хорошо - я договорился!

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Perl - MySQL - Utf-8
« Ответ #2 : 26 Июля 2005, 14:34:19 »
Где отображается?
Попробуй эту страницу прочесть как юникод Utf-8, может натолкнет на мысль...
The documentations is your friend

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Perl - MySQL - Utf-8
« Ответ #3 : 26 Июля 2005, 15:08:14 »
Спасло


$dbh
->do("SET character_set_results=\'utf8\'");


Правда теперь, при использовании

$text
=substr($text,0,50);

Оставляет не 50 символов, а около 25 + последний какой-то кривой символ....

Можно ли как-нть подправить это?
Космическая игрушка

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Perl - MySQL - Utf-8
« Ответ #4 : 26 Июля 2005, 15:44:05 »
посмотрите на модуль cyrillic. в нем есть конвертация вин то ютф и наоборот. в сочетании с
  $dbh->do(\'SET NAMES utf8\')              or die $DBI::errstr;

substr должен нормально работать. ;)
пока-пока. :)

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Perl - MySQL - Utf-8
« Ответ #5 : 26 Июля 2005, 16:04:56 »
В том и засада, что нельзя использовать ни cyrillic, ни japanic, ни vietnamic...

Просто нужно чтобы программка оставалась рабочей при любых
языковых условиях...

Эта козлина воспринимает строку не как обычно, а каждый символ - 2 байта... В документации читал, что перл 5,8 нормально с юникодом...

Что делать не знаю...:(
Космическая игрушка

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Perl - MySQL - Utf-8
« Ответ #6 : 26 Июля 2005, 16:28:42 »
Нашел решение:
Unicode::String

Всем спасибо...
Космическая игрушка

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Perl - MySQL - Utf-8
« Ответ #7 : 26 Июля 2005, 16:35:30 »
use bytes ?
The documentations is your friend

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Perl - MySQL - Utf-8
« Ответ #8 : 26 Июля 2005, 16:49:37 »
Снова проблема...

В форме поиска ввожу русский текст, ответ: не найдено
Теоретически должен найти, phpmyadmin по такому же запросу находит...

Страница выдана пользователю в нужной кодировке...

Может ли перл принять данные в другой кодировке, чем отправил браузер?
Космическая игрушка

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Perl - MySQL - Utf-8
« Ответ #9 : 27 Июля 2005, 13:00:44 »
Справился... :)

Есть снова вопрос!

Страница генерируется из MySQL в кодировке UTF-8...
В тексте страницы вставляется ссылка
http://server.ru/cgi-bin/script.pl?id=1&text=Вася
Так вот, когда в браузере кликаешь на эту ссылку, он выдет ошибку 400 - неверный ввод...

Что можно сделать?
Космическая игрушка

Оффлайн glebushka

  • студент
  • Ветеран
  • *****
  • Сообщений: 944
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.intellectuals.ru
Perl - MySQL - Utf-8
« Ответ #10 : 27 Июля 2005, 16:39:47 »
Error202, никогда не использовать русские буквы в урлах.
Ну к чему все это, лучше бы водки выпили...

Оффлайн Error202

  • Бесстрашный
  • Ветеран
  • *****
  • Сообщений: 540
  • +1/-0
  • 2
    • Просмотр профиля
    • http://www.tender-plus.ru
Perl - MySQL - Utf-8
« Ответ #11 : 28 Июля 2005, 08:54:14 »
Почему? Ведь обычно нормально работает...
В данном случае этот "Вася" отправляется в UTF-8 и с этим ошибка...

Но все равно спасибо... Выкрутился...
Космическая игрушка

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28