powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Задача с подвохом: "Я" => кириллическая буква в UTF-8
14 сообщений из 14, страница 1 из 1
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39093901
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Серверный скрипт работает в кодировке UTF8.
При формировании URL с параметром, содержащим 1 кириллический символ, использую rawurlencode()
При получении - rawurldecode() . Всё работает нормально. В html, например, для буквы "Б" получаем код "%D0%91" (UTF-код 1041).

Но иногда на уровне серверного скрипта в качестве буквы получаю строку: "Я" (и прочие двусимвольные "абракадабры").
Очевидно, что клиент передал в URL 2 байта, но не те, которые соответствуют 2 байтам UTF8-символа. Можно просто проигнорировать эти случаи, выдав клиенту 404 страницу.

Но будет лучше, если скрипт и эти ситуации будет корректно обрабатывать.
Возникает вопрос - как из UTF8-строки "Я" получить нормальную кириллическую букву в кодировке UTF8 ?

Конечно, неизвестно, какие преобразования производит клиент, но можно предположить, что он задействует кодировку windows-1251 ...
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39093903
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подсказка: это буква "Я"...
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39093924
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02Но иногда на уровне серверного скрипта в качестве буквы получаю строку
а какой Encoding при этом на сервер приходит(в Content-type) ?
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39093966
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автора какой Encoding при этом на сервер приходит(в Content-type) ?
Могу предположить, что "windows-1251".
Проверить не могу, т.к. php 5.3, а функций получения заголовков запроса он не ещё поддерживает (получить можно только заголовки ответа - get_headers() ).
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39093976
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02,

так интересно, что в заголовке именно ответа, а не запроса
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39093977
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИзопропилCyrax_02,

так интересно, что в заголовке именно ответа, а не запроса
не то написал
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39094007
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02,

Судя по 18365763 , это Win-1252.
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39094038
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автортак интересно, что в заголовке именно ответа, а не запроса Ответ я сам формирую - там всегда UTF8 прописана.

miksoftСудя по 18365763 , это Win-1252.Да, у меня тоже получилась Win-1252. Это если следовать таблице.
А вообще, таблица интересная. По угадыванию кодировки...
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39094049
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft ,
Код: php
1.
$out = iconv('windows-1252', 'UTF-8', 'Я');

Код: php
1.
[8] iconv() Detected an illegal character in input string in .../test.php (line 35)


Код: php
1.
$out = mb_convert_encoding('Я', 'UTF-8', 'windows-1252');

Код: php
1.
ï
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39094053
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подсказка №2 : на этом форуме при создании новой темы в режиме предварительного просмотра последовательность "Я" отображается как "Я" (при этом после создания темы в тексте сообщения последовательность отображается без изменений - как "Я").
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39094056
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cyrax_02
Код: php
1.
iconv('windows-1252', 'UTF-8', 'Я');

А функция iconv понимает такие конструкции (указание кода символа через амперсанд и решетку)?
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39094059
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА функция iconv понимает такие конструкции (указание кода символа через амперсанд и решетку)? Нет, это последовательность "Я" так отображается внутри тега (PHP)
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39094060
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft ,
$out = iconv('windows-1252', 'UTF-8', 'Я');
Получаем ошибку: [8] iconv() Detected an illegal character in input string in .../test.php (line 35)

$out = mb_convert_encoding('Я', 'UTF-8', 'windows-1252');
Получаем: ï
...
Рейтинг: 0 / 0
Задача с подвохом: "Я" => кириллическая буква в UTF-8
    #39094064
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача: как алгоритмически из UTF8-строки "Я" получить нормальную кириллическую букву "Я" в кодировке UTF8 ?

Подсказка: на этом форуме при создании новой темы в режиме предварительного просмотра последовательность "Я" отображается как "Я" (при этом после создания темы в тексте сообщения последовательность отображается без изменений - как "Я").
...
Рейтинг: 0 / 0
14 сообщений из 14, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Задача с подвохом: "Я" => кириллическая буква в UTF-8
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]