X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Кодировка в ПХП, Help me please >_<
KillingSpree
KillingSpree
Topic Starter сообщение 20.1.2011, 0:13; Ответить: KillingSpree
Сообщение #1


Участник
***

Группа: User
Сообщений: 141
Регистрация: 20.11.2010
Из: Киев
Поблагодарили: 45 раз
Репутация:   7  


В общем, я относительно недавно стал изучать ПХП и столкнулся с этой проблемой кодировок.
Суть: Есть скрипт, он парсит кое-что и собирает в файлы .htm
Из этих .htm мне надо сгенерировать .xml
В парсеных файлах всё на русском и некоторые слова/предложения нужно перевести из русского в транслит. Для этого использую вот такую функцию:
CODE

function encodestring($st)
{
// Сначала заменяем "односимвольные" фонемы.

$st=strtr($st,"абвгдеёзийклмнопрстуфхъыэ ",

"abvgdeeziyklmnoprstufh'ie-");

$st=strtr($st,"АБВГДЕЁЗИЙКЛМНОПРСТУФХЪЫЭ ",

"ABVGDEEZIYKLMNOPRSTUFH'IE-");

// Затем - "многосимвольные".

$st=strtr($st,

array(

"ж"=>"zh", "ц"=>"ts", "ч"=>"ch", "ш"=>"sh",

"щ"=>"shch","ь"=>"", "ю"=>"yu", "я"=>"ya",

"Ж"=>"ZH", "Ц"=>"TS", "Ч"=>"CH", "Ш"=>"SH",

"Щ"=>"SHCH","Ь"=>"", "Ю"=>"YU", "Я"=>"YA",

"ї"=>"yi", "Ї"=>"Yi", "є"=>"ie", "Є"=>"Ye"

)

);

// Возвращаем результат.

return $st;

}


Даю этой функции строку типа "привет меня зовут Афанасий", а на выходе получаю что-то вроде "ePeleޥsmÂi ⁚eŭĭågeߥi".
Кодировка везде стоит UTF-8 (в денвере, редакторе и даже в header()).

Как это исправить, чтобы на выходе получать нормальный транслит?

Заранее огромное вам спасибо!


--------------------
Хочешь зарабатывать на своем сайте 5000$ в месяц? - Я тоже! )
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
CaHbka
CaHbka
сообщение 20.1.2011, 0:16; Ответить: CaHbka
Сообщение #2


Участник
***

Группа: User
Сообщений: 193
Регистрация: 5.9.2009
Из: С:\Земля\Украина\Кировоградская обл.\г.Светловодск
Поблагодарили: 40 раз
Репутация:   6  


В блокноте кодировку не пробовали поменять?

У меня стоит NotePad 2 и так есть такая штука File > Encoding > UTF 8

Была проблема с какими-то файлами на WP, пока не поменял кодировку в блокноте. Может и Вам поможет.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
KillingSpree
KillingSpree
Topic Starter сообщение 20.1.2011, 0:24; Ответить: KillingSpree
Сообщение #3


Участник
***

Группа: User
Сообщений: 141
Регистрация: 20.11.2010
Из: Киев
Поблагодарили: 45 раз
Репутация:   7  


Менял, бесполезно. Я подозреваю что собака зарыта именно в этой функции и он просто не понимает в UTF этих русских символов, но понятия не имею как сделать по-другому, в общем-то по-этому и пишу сюда.


--------------------
Хочешь зарабатывать на своем сайте 5000$ в месяц? - Я тоже! )
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
proXBOCT
proXBOCT
сообщение 20.1.2011, 0:31; Ответить: proXBOCT
Сообщение #4


PHP-писака
*****

Группа: Active User
Сообщений: 867
Регистрация: 20.4.2008
Из: Тольятти
Поблагодарили: 297 раз
Репутация:   47  


А если наоборот всё сделать в win-1251?

И надо проверить, действительно ли строка до кодирования верно отображается


--------------------


Поблагодарили: (1)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
KillingSpree
KillingSpree
Topic Starter сообщение 20.1.2011, 0:31; Ответить: KillingSpree
Сообщение #5


Участник
***

Группа: User
Сообщений: 141
Регистрация: 20.11.2010
Из: Киев
Поблагодарили: 45 раз
Репутация:   7  


proXBOCT, на выходе надо получить UTF-8, да и автор курса по ПХП, который я проходил, всё твердил что UTF - the best и самая универсальная, вот и хочется к ней приспособится. Но в силу неопытности еще не "прохавал" все подводные камни.
Этим вариантом я воспользуюсь в самом крайнем случае, когда просто надоест искать выход из ситуации (ведь он есть).


--------------------
Хочешь зарабатывать на своем сайте 5000$ в месяц? - Я тоже! )
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Tollun
Tollun
сообщение 20.1.2011, 10:06; Ответить: Tollun
Сообщение #6


Старожил
******

Группа: Active User
Сообщений: 1595
Регистрация: 1.10.2009
Из: Хабаровск
Поблагодарили: 394 раза
Репутация:   66  


Скорее всего я не всё понял, но русские символы в транслит просто перевести
$name = "Привет";
$iso = array(
   "Є"=>"YE","І"=>"I","Ѓ"=>"G","і"=>"i","№"=>"n","є"=>"ye","ѓ"=>"g",
   "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D",
   "Е"=>"E","Ё"=>"YO","Ж"=>"ZH",
   "З"=>"Z","И"=>"I","Й"=>"J","К"=>"K","Л"=>"L",
   "М"=>"M","Н"=>"N","О"=>"O","П"=>"P","Р"=>"R",
   "С"=>"S","Т"=>"T","У"=>"U","Ф"=>"F","Х"=>"X",
   "Ц"=>"C","Ч"=>"CH","Ш"=>"SH","Щ"=>"SHH","Ъ"=>"'",
   "Ы"=>"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","х"=>"x",
   "ц"=>"c","ч"=>"ch","ш"=>"sh","щ"=>"shh","ъ"=>"",
   "ы"=>"y","ь"=>"","э"=>"e","ю"=>"yu","я"=>"ya"
);
$tolat = strtr($name, $iso);

Когда-то позаимствовано у wp плагина Rus to Lat


А если тебе нужно кадировку перевернуть то iconv

Сообщение отредактировал Tollun - 20.1.2011, 10:07


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
On1x
On1x
сообщение 20.1.2011, 10:14; Ответить: On1x
Сообщение #7


Бывалый
****

Группа: User
Сообщений: 262
Регистрация: 24.1.2010
Из: Димитровград
Поблагодарили: 61 раз
Репутация:   20  


Было такое. Как вариант - могу лишь посоветовать одно - данные которые собираешься переводить в транслит - предварительно пропустить через iconv("UTF-8//IGNORE","CP-1251//IGNORE",$str); Перевести в транслит - и обратно iconv("CP-1251//IGNORE","UTF-8//IGNORE",$str);


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
MedveD5249
MedveD5249
сообщение 20.1.2011, 12:00; Ответить: MedveD5249
Сообщение #8


Частый гость
**

Группа: User
Сообщений: 58
Регистрация: 7.1.2011
Поблагодарили: 4 раза
Репутация:   -14  


в вин-1251 попробуй


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dan1
dan1
сообщение 20.1.2011, 12:00; Ответить: dan1
Сообщение #9


Участник
***

Группа: User
Сообщений: 195
Регистрация: 12.8.2010
Из: Тагила
Поблагодарили: 74 раза
Репутация:   25  


Тоже склоняюсь к методу использования iconv()
Попробуйте ещё в .htaccess добавить запись:
AddDefaultCharset utf-8
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
WebAction
WebAction
сообщение 20.1.2011, 12:02; Ответить: WebAction
Сообщение #10


Топовый постер
*******

Группа: Super Moderator
Сообщений: 3059
Регистрация: 18.11.2009
Поблагодарили: 2512 раз
Репутация:   249  


win-1251 и все должно быть в шоколаде


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Требуется пхп спец. Опенкарт
0 Mukis 371 3.8.2017, 13:09
автор: Mukis
Открытая тема (нет новых ответов) Ищу опытного пхп програмера
доделать доску объявлений
0 sergeyich 579 24.6.2016, 17:35
автор: sergeyich


 



RSS Текстовая версия Сейчас: 15.12.2017, 8:57
Дизайн