У меня проблема с URL-кодированием текста с использованием JavaScript.Я нахожусь в Германии, где у нас есть эти «Umlaute» (ÄÖÜ), и эти буквы создают некоторые проблемы.
Онлайн кодировщик / декодер возвратил следующие результаты для слова «Äpfel» (яблоки).
Äpfel >>> url-кодирование >>>% C3% 84pfel
% C3% 84pfel >>> url-декодирование >>> Äpfel
Для тестирования я создалследующий php.file (poc.php) без php-контента, только javascript:
<script type="text/javascript">
var t = "Äpfel";
t = encodeURI(t);
alert(t);
t = decodeURI(t);
alert(t);
</script>
Первое предупреждение возвращает «% EF% BF% BDpfel», что отличается от результата онлайн-кодировщика.
Второе предупреждение возвращает «fpfel» (да, ромб с «?»).
Кажется, что javascript не может декодировать только что закодированный текст.
Я думаю, причина этого поведения где-то в настройках PHP.Когда я просто переименовываю файл из «poc.php» в «poc.html», кодировка верна, и предупреждения возвращают те же результаты, что и онлайн-кодировщик / декодер.
Когда я проверяю текущую кодировку, javascriptи php возвращает "utf-8".
В моем "реальном" проекте у меня есть файл ".js", включенный в мой php-файл (с той же проблемой).
<script type="text/javascript" src="scripts/functions.js"></script>
Кто-нибудь знает, что вызывает такое поведение?