Forum Webscript.Ru
		Программирование => Perl => Тема начата: Error202 от 26 Июля 2005, 13:52:17
		
			
			- 
				Есть программа на Perl...
Она должна выдавать данные MySQL в кодировке utf-8...
В MySQLе есть несколько записей на русском...
MySQL по умолчанию имеет кодировку utf-8...
Почему данные отображаются скриптом как знаки вопросов?
			 
			
			- 
				use locale?
			
 
			
			- 
				Где отображается?
Попробуй эту страницу прочесть как юникод Utf-8, может натолкнет на мысль...
			 
			
			- 
				Спасло 
$dbh->do("SET character_set_results=\'utf8\'");
Правда теперь, при использовании 
$text=substr($text,0,50);
Оставляет не 50 символов, а около 25 + последний какой-то кривой символ....
Можно ли как-нть подправить это?
			 
			
			- 
				посмотрите на модуль cyrillic. в нем есть конвертация вин то ютф и наоборот. в сочетании с 
  $dbh->do(\'SET NAMES utf8\')              or die $DBI::errstr;
substr должен нормально работать. ;)
			 
			
			- 
				В том и засада, что нельзя использовать ни cyrillic, ни japanic, ни vietnamic... 
Просто нужно чтобы программка оставалась рабочей при любых
языковых условиях... 
Эта козлина воспринимает строку не как обычно, а каждый символ - 2 байта... В документации читал, что перл 5,8 нормально с юникодом...
Что делать не знаю...:(
			 
			
			- 
				Нашел решение:
Unicode::String
Всем спасибо...
			 
			
			- 
				use bytes ?
			
 
			
			- 
				Снова проблема...
В форме поиска ввожу русский текст, ответ: не найдено
Теоретически должен найти, phpmyadmin по такому же запросу находит...
Страница выдана пользователю в нужной кодировке...
Может ли перл принять данные в другой кодировке, чем отправил браузер?
			 
			
			- 
				Справился... :)
Есть снова вопрос!
Страница генерируется из MySQL в кодировке UTF-8...
В тексте страницы вставляется ссылка 
http://server.ru/cgi-bin/script.pl?id=1&text=Вася
Так вот, когда в браузере кликаешь на эту ссылку, он выдет ошибку 400 - неверный ввод...
Что можно сделать?
			 
			
			- 
				Error202, никогда не использовать русские буквы в урлах.
			
 
			
			- 
				Почему? Ведь обычно нормально работает...
В данном случае этот "Вася" отправляется в UTF-8 и с этим ошибка... 
Но все равно спасибо... Выкрутился...