|
|
|
| Всем доброго дня! Помогите со следующим вопросом. Недавно перевел apache и mysql на utf-8. Перестала работать функция взятая с softtime:
echo "<form action='index.php' method='post'>";
echo "<td>Логин (кириллица):</td>";
echo "<td><input type='text' name='login' size='30' class='form'></td>";
echo "<td><input type='submit' class='form' value='GENERATE'></td>";
echo "</form>";
if (!empty($_POST['login']))
{
echo $st = encodestring($_POST[login]);
}
function encodestring($st)
{
// Сначала заменяем "односимвольные" фонемы.
$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ_",
"abvgdeeziyklmnoprstufh'iei");
$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ_",
"ABVGDEEZIYKLMNOPRSTUFH'IEI");
// Затем - "многосимвольные".
$st=strtr($st,
array(
"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",
"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",
"Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",
"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",
"ї"=>"i", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"
)
);
// Возвращаем результат.
return $st;
}
|
Получаю на выходе кракозябли. Может знает кто в чем проблема?
Спасибо | |
|
|
|
|
|
|
|
для: Front
(13.05.2008 в 14:46)
| | <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> ставить пробовали?? | |
|
|
|
|
|
|
|
для: Usta
(13.05.2008 в 15:06)
| | ><meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> ставить пробовали??
лучше попробуйте <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> и проверьте в какой кодировке сохранен сам php файл | |
|
|
|
|
|
|
|
для: KPETuH
(14.05.2008 в 06:22)
| | Не совсем понятно зачем ставить
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
|
если кодировка utf-8? Но так тоже не работает.
Пробовал переводить utf-8 в cp1251, затем вызавал функцию encodestring, а результат этой функции переводил обратно в utf-8, в результате на выходе получается тоже что и вводил т.е. ввожу ИВАНОВ на выходе => ИВАНОВ!
делал так:
$st = iconv("utf-8","cp1251",$_POST[login]);
$st = encodestring($st);
$st = iconv("cp1251","utf-8",$st);
|
Кодировку проверял, файл сохранен в utf-8! | |
|
|
|
|
|
|
|
для: Front
(14.05.2008 в 09:17)
| | >Не совсем понятно зачем ставить
>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
>если кодировка utf-8? Но так тоже не работает.
затем что браузер не знает в какой у вас кодировке и ему указать нужно... | |
|
|
|
|
|
|
|
для: KPETuH
(14.05.2008 в 09:26)
| | возможно проблема в том что utf-8 многобайтная кодировка, попробуйте использовать регулярные выражения | |
|
|
|
|
|
|
|
для: Front
(14.05.2008 в 09:17)
| |
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<?php
echo "<form action='wert.php' method='post'>";
echo "<td>Кирилица:</td>";
echo "<td><input type='text' name='login' size='30' class='form'></td>";
echo "<td><input type='submit' class='form' value='GENERATE'></td>";
echo "</form>";
if (!empty($_POST))
{
echo $_POST['login'];
echo $st = encodestring($_POST['login']);
}
function encodestring($string)
{
$table = array(
'А' => 'A',
'Б' => 'B',
'В' => 'V',
'Г' => 'G',
'Д' => 'D',
'Е' => 'E',
'Ё' => 'YO',
'Ж' => 'ZH',
'З' => 'Z',
'И' => 'I',
'Й' => 'J',
'К' => 'K',
'Л' => 'L',
'М' => 'M',
'М' => 'N',
'О' => 'O',
'П' => 'P',
'Р' => 'R',
'С' => 'S',
'Т' => 'T',
'У' => 'U',
'Ф' => 'F',
'Х' => 'H',
'Ц' => 'C',
'Ч' => 'CH',
'Ш' => 'SH',
'Щ' => 'CSH',
'Ь' => '',
'Ы' => 'Y',
'Ъ' => '',
'Э' => 'E',
'Ю' => 'YU',
'Я' => 'YA',
'а' => 'a',
'б' => 'b',
'в' => 'v',
'г' => 'g',
'д' => 'd',
'е' => 'e',
'ё' => 'yo',
'ж' => 'zh',
'з' => 'z',
'и' => 'i',
'й' => 'j',
'к' => 'k',
'л' => 'l',
'м' => 'm',
'н' => 'n',
'о' => 'o',
'п' => 'p',
'р' => 'r',
'с' => 's',
'т' => 't',
'у' => 'u',
'ф' => 'f',
'х' => 'h',
'ц' => 'c',
'ч' => 'ch',
'ш' => 'sh',
'щ' => 'csh',
'ь' => '',
'ы' => 'y',
'ъ' => '',
'э' => 'e',
'ю' => 'yu',
'я' => 'ya',
);
$output = str_replace(
array_keys($table),
array_values($table),$string
);
return $output;
}
?>
</body>
</html>
|
| |
|
|
|
|
|
|
|
для: KPETuH
(14.05.2008 в 10:20)
| | Вставил вашу функцию, еще раз пересохранил в utf и заработало! Спасибо большое. Тема закрыта. | |
|
|
|
|
|
|
|
для: Front
(14.05.2008 в 11:21)
| | люди почему если текст котрый нужно транслировать получен из post то транслит не получатся, а если просто $text="текст для трансляции"; то все ок.
$text=$_FILES['test']['name'];
$dlina = strlen($text);
echo "$text<br>";
$r_trans = array("а","б","в","г","д","е","ё","ж","з","и","й","к","л","м",
"н","о","п","р","с","т","у","ф","х","ц","ч","ш","щ","э",
"ю","я","ъ","ы","ь");
$e_trans = array("a","b","v","g","d","e","e","j","z","i","i","k","l","m",
"n","o","p","r","s","t","u","f","h","c","4","sh","s4",
"e","yu","ya","'","i","'");
for ($i=0;$i<$dlina;$i++)
{
$text = str_replace($r_trans, $e_trans, $text);
}
echo $text."<br>";
|
| |
|
|
|
|
|
|
|
для: pav4
(29.08.2008 в 15:05)
| | >если текст котрый нужно транслировать получен из post то транслит не получатся
а в какой кодтровке у вас приходят ПОСТ-данные??? Подумайте... | |
|
|
|
|
|
|
|
для: mihdan
(30.08.2008 в 02:06)
| | у меня так:
setlocale(LC_CTYPE, array ('ru_RU.UTF-8'));
как бы проверить какая кодировка? | |
|
|
|
|
|
|
|
для: pav4
(30.08.2008 в 08:22)
| | up | |
|
|
|
|
|
|
|
для: Front
(14.05.2008 в 11:21)
| | > и заработало!
Это ненадолго:) | |
|
|
|
|
|
|
|
для: KPETuH
(14.05.2008 в 10:20)
| |
опечатка | |
|
|
|
|
|
|
|
для: lorenberg
(19.11.2008 в 22:23)
| | Можно ли переделать данный скрипт, добавив парочку функций? Как его заставить открывать файлы с определённым расширением, находящиеся в том же каталоге, что и он сам, и далее вниз по подкаталогам?
Скрипт открывает файл с определённым расширением ==> транслит ==> запись в файл ==> работа со следующим файлом, если нет больше файлов в данном каталоге, переходим в подкаталог. Скрип заканчивает свою работу после того, как были прочитаны все файлы. Результат можно записать в отдельную папку, или сделать перезапись существующего...
Подскажите пожалуйста как это можно реализовать =) | |
|
|
|
|