@Alexandrovskiy

Куда гуглить, если ajax англ буквы норм передает, а русские нет?

Я делаю сайт для себя и заодно обучиться программированию. Тут стр. показать код, потому что не пойму в каком куске проблема и соответственно не знаю какой вырезать, что бы тут кратко выложить. -
https://github.com/AlexShvet/test/tree/master/времянка
На странице main_stop_watch.php в class="input_name" вводятся буквы.
На странице fortune.js с jquery эти буквы отправляются на стр php.
На странице fortune.php делается массив чисел и эти числа в качестве ключей создают из строки с алфавитом случайное слово. Это слово сравнивается с введенным пользователем и если одинаковое, то ajax напечатает результат на стр. где вводились данные.
На openserver работало всё прекрасно, но стоило мне выложить это на https://beget.com/ru (пока бесплатно пользуюсь), как оказалось, что с русскими буквами не работает. С латинскими всё по прежнему прекрасно.
Пробовал:
- везде где можно ставить вкл. кодировки utf-8 - не помогает
- на https://beget.com/ru написано, что они по умолчанию используют везде utf-8
- в ajax прописывал вывод чего в инпуте берется - на стр нормальные русские буквы, не кракозябры.
- в php переменная $name = mb_convert_encoding($_POST["name"],'UTF-8'); пуста, если русские буквы.
- в консоли ошибка Failed to load resource: the server responded with a status of 502 (Bad Gateway) гуглеж не помог, поэтому и прошу растолковать:

1) - почему рус теряется?
2) - почему на хостинге не работает, если на опенсервере все окей?
3) - что вообще гуглить?(первый раз такое О_о )
  • Вопрос задан
  • 99 просмотров
Решения вопроса 1
@none7
Прежде чем проводить какую то операцию с переменной, ей нужно присвоить значение. Ваш код на https://sandbox.onlinephpfunctions.com/ выдаёт целую портянку предупреждений о том, что переменные array_key и arr не определены. Понятия не имею каким образом у Вас этот код работает с латиницей. Добавление в начало функции строк
$array_key = [];
    $arr = "";

А так же замена iconv_strlen на mb_strlen($name, 'UTF-8') вроде бы делает код рабочим. Вероятно в этом и была основная проблема.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
hzzzzl
@hzzzzl
посмотреть на это со стороны js
https://developer.mozilla.org/ru/docs/Web/JavaScri...

и обратную функцию на стороне php (не знаю, наверняка как-то похоже будет называться)

UPD вероятно php сам из коробки распарсит в нужный юникод
https://stackoverflow.com/a/7147071
you don't need to do anything - it is transparently converted back to its original form when the request is parsed
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы