Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Тексты > конвертация из bin2hex() в норм. строку. КАК ? |
Автор: numerovan 24.10.2009, 06:38 | ||
Ситуация такая ... мне нужно сделать сайт на двух языках : на немецком и на русском . В немецком алфавите есть так называемые УМЛАУТЫ , utf-8 их хорошо различает, а вот в windows-1251 проблема , но есть замена их на "Ä" и т.д.. В utf-8 кириллица весит в 2 раза больше чем на windows-1251, поэтому не хочу ради 5 символов менять кодировку. Я сделал следующее : имеется строка с этими УМЛАУТАМИ , строку перевожу с помощью bin2hex() , от тудова по поду символа заменяю на "Ä" и т.д. ... а после хочу обратно строку в нормальный вид перекодировать, но что т не получается ... Можно конечно посимвольно распознать и заменить, боюсь что нагрузка на сервер будет хорошая. НЕ ПОДСКАЖЕТЕ МОЖЕТ ЕСТЬ КАКАЯ НИБУДЬ ФУНКЦИЯ , КОТОРАЯ ПРЕОБРАЗОВЫВАЕТ В ЧИТАБЕЛЬНЫЙ ВИД ? Вот что у меня есть :
|
Автор: youri 24.10.2009, 06:48 |
расслабься и используй utf-8 ;) |
Автор: numerovan 24.10.2009, 07:58 |
Скажу почему я не хочу использовать utf-8, потому что она увеличивает кириллицу, а у меня там кириллицы будет очень много ... ради нескольких символов не хочится жертвовать дисковым пространством. Да дело даже и не в пространстве ... просто реально интересно ... А МОЖНО ЛИ ПЕРЕКОНВЕРТИРОВАТЬ ... если так , то почему бы и нет ? |
Автор: Ипатьев 24.10.2009, 09:07 |
Очень смешная причина не исползовать UTF. Дисковое пространство просто трещит по швам. |
Автор: Wolf1994 24.10.2009, 10:00 |
Попробуйте заменять оригинальные символы, без перевода в шестнадцатеричный формат. |
Автор: numerovan 24.10.2009, 23:32 |
Мужики, я понимаю Вам смешно от этой ситуацией , но как говориться ЗАЧЕМ ПЛАТИТЬ БОЛЬШЕ, КОГДА МОЖНО ЗАПЛАТИТЬ МЕНЬШЕ ... я так к слову ... "Попробуйте заменять оригинальные символы, без перевода в шестнадцатеричный формат" - функция bin2hex() кодирует ВСЮ строку сразу, после я могу выследить эти УМЛАУТЫ , по другому не вижу способа для отслежки. Хотя можно и по символьно отслеживать и заменять ... ну вот встречный ворос КАК ЭТО БУДЕТ ВЛИЯТЬ НА РЕСУРСЫ СЕРВЕРА ? Помоему чтоб отследиь посимвольно это идея ... )) КТО НИБУДЬ ЗНАЕТ КАК ПРОВЕРЯТЬ КОД НА ПРОИЗВОДИТЕЛЬНОСТЬ ? Т.Е. Я НАПИСАЛ КОД, ДОПУСТИМ, И МНЕ ПО ВРЕМЯНИ ПОКАЗЫВАТЬСЯ ЧТО ОН ВЫПОЛНИЛСЯ ДОМУСТИМ В 0.5 СЕК , ДАЛЕЕ ПЕРЕПЕСАЛ КОД , В ЛУЧШУЮ СТОРОНУ И МНЕ ПОКАЗЫВАТЬСЯ ЧТО КОД ВЫПОЛНИЛСЯ ЗА 0.2 СЕК .... КТО ЗНАЕТ КАК ТАК СДЕЛАТЬ ? |
Автор: numerovan 25.10.2009, 06:56 | ||
В итоге будет сайт знакомств ... где русскоязычные будут пополнять базу своими сообщениями и через год эта база будет весить в 2 раза больше нежели если было бы всё в кодировке windows-1251, а не в utf-8 ... из-за этого я так говорю. Добавлено через 1 минуту и 6 секунд ЕСТЬ КАКАЯ НИБУДЬ ФУНКЦИЯ , КОТОРАЯ ПРЕОБРАЗОВЫВАЕТ В ЧИТАБЕЛЬНЫЙ ВИД ? |
Автор: NLspieler 25.10.2009, 07:34 |
Для сайта знакомств все же лучше использовать utf. Вдруг пользователю захочется написать сообщение на китайском или зимбабвянском? Кроме того, если я не ошибаюсь, если поставить на страницу кодировку windows-1251, то "ü" , "ö" , "ä" будут приходить без точек, а вместо ß будет приходить пробел. |
Автор: bars80080 25.10.2009, 10:42 | ||
я спрашивал не про объёмы на жёстком диске, а про "платить". по моему всем этим гемором ты уже платишь больше, чем пришлось бы с ютф. мало того, за впоследствии возникающие косяки тоже придётся расплачиваться. если бы ты нанимал работника за настоящую деньгу, а не транжирил собственное время, то я думаю для тебя вопрос решился бы быстро. за что платить больше |
Автор: Bishop 25.10.2009, 14:01 | ||||||||||
numerovan, судя по приведенному коду, вы вообще не понимаете, что в нем происходит. Почему вы тогда не пишете просто:
Хотя ищете вы похоже такой выход:
отрицательно
не в два. Экономя дисковые ресурсы, вы тратите больше ресурсов процессора. При этом ограничиваете себя и пользователей.
а потом вы вспомните про украинский алфавит, где тоже всего-то два (не знаю сколько) символа дополнительных, потом белорусский… Самое главное: пользователь с немецким интерфейсом не сможет общаться с пользователем с русским интерфейсом ни на каком языке. Но зачем я это вам рассказываю. Главное для вас место на диске — решение я привел выше. Правильный же ответ уже озвучен: использовать utf8. |
Автор: MoLeX 26.10.2009, 07:27 | ||||
|
Автор: numerovan 3.11.2009, 07:55 | ||||||||
Всё мужики понятно ... Правильно подметили что ещё и украинский там о своём даёт знать и белорусский и т.д. Понятно - ЛУЧШЕ ИСПОЛЬЗОВАТЬ UTF-8 ! кстати
эти символы будут не правильно отоблажаться, Вы правильно подметили, поэтому я пользовался функцией bin2hex(), которая переводила в 16-ый вид , а после я находил эти УМЛАУТЫ и заменял их на нормальный вид (ö)
В первое значение функции str_replace() НЕ ПРИХОДИТ символ кириллицы, немецкие УМЛАУТЫ не распознаются так, поэтому я пользовался функцией bin2hex(), это как бы компрамис между кодировками.
Вы тут правильно подметили ... если моя функция будет потоянно проверять каждый символ , и если сразу будет много народу сидеть ... то нагрузка на процессор будет большая.
Что это за ПРЕДЛОЖЕНИЕ , я так и не понял ). |