PDA

Просмотр полной версии : Переменная выводиться в другой кодировке...?


forward
17.01.2008, 14:11
Првет ВСЕМ!!!
Есть файлы .tpl (Шаблон) в которых нормально выводяться переменные с руской кодировкой, но есть одна переменная $title которая в любом .tpl файле выводиться в другой кодировке (кразябрами)....подскажите где рыть? Может где то в Smarty?:)

kotsie
17.01.2008, 19:21
а откуда берётся значение в $title?

forward
18.01.2008, 16:13
Вот два файла, ordner.php обрабатывает запрсы а folders.tpl выводит все, там есть таблица в ней есть переменная {$item.titel} название папок....

Помоему переменная $item берется из index.php он тоже есть....

А теперь самое интересное в файле index.php справа в таблице есть переменная {$item.name} она выводит тоже самое меню созданных но нормально...
На скриншоте это видно хорошо....

Не отображаются те русcкие слова которые беруться из базы данных, хотя в базе все впорядке он коректно заносит кодировка стоит cp1251_general_ci , а вот выводит...кракозябры...:)

forward
18.01.2008, 17:03
Спасибо блин помог!!!:(

kotsie
18.01.2008, 18:09
согласен, утф роксит.
если данные действительно берутся из БД - посмотри какая у тебя кодировка соединения. Сам сайт я так понимаю открывается в 1251?
и все его админские части тоже (чтобы в базу писалось в нужной кодировке)

forward
18.01.2008, 19:32
короче такая штука пишу
mysql_query("set names utf8");
появили кразябры но другие, появились даже в других местах, значит работает
а если такое написать только для кирилици как правельно пому что я пишу mysql_query("set names windows-1251"); и нефига...

Skubent
18.01.2008, 20:07
http://dev.mysql.com/doc/refman/5.0/en/charset-connection.html

kotsie
18.01.2008, 22:45
попробуйте эту переменную в БД перезаписать. может быть она на этом этапе просто испортилась

forward
21.01.2008, 12:02
Пробовал:
mysql_query ("SET NAMES 'cp1251'");
и так:
mysql_query ("SET CHARACTER SET cp1251");
нечего,

Еще нашел вот такой кусок кода:
function Ueber_XML($referenz, $msg_id, $mail, $ip, $partner = array(), $richtung, $ueber_start, $ueber_ende, $usermail)
{
$d_format = 'd/m/Y H:i:s';
$crlf = "\r\n";

$partner = implode('; ', $partner);
$msg_id = str_replace(array('<','>'), '', $msg_id);

$xml = '<?xml version="1.0" encoding="UTF-8"?>' . $crlf;
$xml .= '<!DOCTYPE hi3-email SYSTEM "hi3-email.dtd">' . $crlf;
$xml .= '<?xml:stylesheet href="E-Mail.xsl" type="text/xsl"?>' . $crlf;
$xml .= '<hi3-email>' . $crlf;
$xml .= ' <Versionskennung>1.1</Versionskennung>' . $crlf;
$xml .= ' <Datensatzart>report</Datensatzart>' . $crlf;
$xml .= ' <Referenznummer>' . utf8_encode($referenz) . '</Referenznummer>' . $crlf;
$xml .= ' <Zuordnungsnummer>' . utf8_encode($msg_id) . '</Zuordnungsnummer>' . $crlf;
$xml .= ' <Kennung-des-zueA>' . utf8_encode($usermail) . '</Kennung-des-zueA>' . $crlf;
$xml .= ' <IP>' . utf8_encode($ip) . '</IP>' . $crlf;
$xml .= ' <Partner-Kennung>' . utf8_encode($partner) . '</Partner-Kennung>' . $crlf;
$xml .= ' <Beginn>' . utf8_encode(date($d_format)) . '</Beginn>' . $crlf;
$xml .= ' <Richtung>' . $richtung . '</Richtung>' . $crlf;
$xml .= ' <Ausloesegrund-zueA>erfolgreich</Ausloesegrund-zueA>' . $crlf;
$xml .= ' <Beginn-UEM>' . utf8_encode(date($d_format, $ueber_start)) . '</Beginn-UEM>' . $crlf;
$xml .= ' <Ende-UEM>' . utf8_encode(date($d_format, $ueber_ende)) . '</Ende-UEM>' . $crlf;
$xml .= ' <email>' . $crlf;
$xml .= ' <!-- Beginn E-Mail -->' . $crlf;
$xml .= ' <![CDATA[' . wordwrap(base64_encode($mail), 76, $crlf, true) . ']]>' . $crlf;
$xml .= ' <!-- Ende E-Mail -->' . $crlf;
$xml .= ' </email>' . $crlf;
$xml .= '</hi3-email>';

return $xml;
}
и там есть функция utf8_encode, пытался заменить на cp1251_encode, нет такой функции...

Теоретичеки проблема такова что именно все данные которые выводять ся в таблицу , выводяться в другой кодировке...

kotsie
21.01.2008, 14:56
что-то я не понял, откуда здесь вдруг XML нарисовался?
и у него-то небось utf-8 кодировка, так что конвертировать в 1251 ни в коем случае нельзя.

NikR
24.01.2008, 01:54
try: mysql_query('set character_set_results=utf8',$link);

forward
24.01.2008, 11:45
Может так что то получиться?
Держите мою версию почтовой системы
http://*****************/files/3210778

Проблемка этой версии описана выше :)

Помогите кто может....

try: mysql_query('set character_set_results=utf8',$link);

Cкажите этоже надо тогда перевести все файлы в utf-8 и базу?:)

Вот нашел эта фукция заменяла букву д на какую то хрень, я сделал вот так:
$out = str_replace("Д", "Д", $out);
но это только в теле письма.....
А как написать заменить все русские буквы?
Просто гдето есть эта функция которая заменяет русские буквы в именах папок и адресов....