![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: нет Всего: 99 |
А на выходе только öäüßzeile1. То есть вторая строка не выдается вообще (вторая функция ничего не возвращает). Не понимаю почему... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
unicross |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 422 Регистрация: 15.6.2008 Репутация: 21 Всего: 53 |
По умолчанию, если функция iconv() не может преобразовать символы, то она прекращает свое выполнение. Чтобы этого не было следует использовать флаги //TRANSLIT или //IGNORE. Например:
Описание функции iconv() здесь http://ru.php.net/manual/en/function.iconv.php |
||||
|
|||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: нет Всего: 99 |
unicross, спасибо. При помощи //IGNORE получил
öäüßzeile1zeile2 То есть умлауты из UTF-8 в ISO-8859-1 функцией iconv не переделать? Вроде кстати с htmlspecialchars нужный вариант получается, но что-то неуверен... p.s. php я так между делом использую, надо доделать просто одну вещь... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
unicross |
|
||||||||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 422 Регистрация: 15.6.2008 Репутация: 21 Всего: 53 |
Если эти символы входят в кодировку ISO-8859-1, то можно. UTF-8 способна вместить практически любую кодировку. Поэтому любую однобайтную кодировку можно преобразовать в UTF-8, но при обратной операции могут быть символы, которые не входят в однобайтную кодировку (в данном случае в ISO-8859-1) и они будут проигнорированы при наличии флага //IGNORE. Ведь более 65 тыс. символов не поместятся в 256... В качестве примера создайте файл в кодировке UTF-8 без BOM (например, с помощью Notepad++) со сл. программой:
В результате получим нормальный результат:
Все зависит от кодировки файла в котором находится строка. В вашем случае я так понимаю строки $block_body1 и $block_body2 содержат данные в кодировке ISO-8859-1, а не в UTF-8. Поэтому в первом случае нормальный результат, а во втором - проблемы с символами. Если символы в однобайтную кодировку не входят, то можно преобразовать их в HTML-эквиваленты с помощью функции htmlentities()
Результат
В этом случае символы в кодировку windows-1251 не входят, но мы заменили их на HTML-эквиваленты. Это сообщение отредактировал(а) unicross - 6.10.2009, 01:56 |
||||||||||
|
|||||||||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: нет Всего: 99 |
Но ведь умлауты есть в ISO_8859-1?
-------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
unicross |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 422 Регистрация: 15.6.2008 Репутация: 21 Всего: 53 |
cardinal, если вы под словом "умлаут" подразмеваете буквы ä, ö и ü, то эти символы присутствуют в кодировке ISO_8859-1 и нормально преобразовываются в (из) UTF-8 с помощью iconv() (примеры в моем посте выше, там с этими буквами все нормально). |
|||
|
||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
||||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: нет Всего: 99 |
Ипатьев, у меня вот в этом примере (см. выше) не получается нормальный результат. Правда я не понял что такое BOM и еще у меня
То есть сама страница в utf-8, а текст, который вводят на странице надо переделать в iso-8859-1... -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
unicross |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 422 Регистрация: 15.6.2008 Репутация: 21 Всего: 53 |
BOM - это метка порядка байтов, служебные символы, которые не позволят установить заголовки ответа сервера с помощью функции header(). Блокнот по умолчанию вставляет эти символы.
Нужно выбирать что-то одно или iso-8859-1 или utf-8. Нельзя вывести две кодировки на одну страницу без искажения одной из кодировок. Этот пример абсолютно рабочий... Сама страница в utf-8, а текст, который вводят на странице переделывается в iso-8859-1 и посылается соответствующий заголовок (iso-8859-1, а не utf-8)...
Вот из-за этого и ошибка... Это сообщение отредактировал(а) unicross - 6.10.2009, 19:56 |
||||
|
|||||
Ипатьев |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2232 Регистрация: 5.7.2009 Репутация: 28 Всего: 37 |
Странно.
Зачем указывать одну кодировку, а текст перекодировать в другую. Если надо переделать текст, который вводят, то при чем здесь вывод? Сдается мне, опять здесь опять тот случай, когда проблема не в решении задачи, а в ее постановке. Осмысленность приводимых примеров кода уменьшается с каждым разом. |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: нет Всего: 99 |
То что будет искажение это понятно. Прочитал эти слова и решил пройтись по заголовкам всех страниц. И вот оно, не везде iso-8859-1 указал и поэтому данные с одной страницы на другую передавались не так. Вообщем всем спасибо! Проблема решилась (почти сама собой ![]() Это сообщение отредактировал(а) cardinal - 6.10.2009, 23:19 -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
![]() ![]() ![]() |
Правила форума "PHP" | |
|
Новичкам:
Важно:
Внимание:
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |